⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 customeventtest.java

📁 这是一个经典的动态页面JAVA程序。在每一次定时器滴答
💻 JAVA
字号:
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class CustomEventTest
{
	public static void main(String[] args)
	{
		CustomEventFrame frame=new CustomEventFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.show();
	}
}
class CustomEventFrame extends JFrame
{
	public CustomEventFrame()
	{
		setTitle("CustomEventTest");
		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
		CustomEventPanel panel=new CustomEventPanel();
		Container contentPane =getContentPane();
		contentPane.add(panel);
	}
	public static final int DEFAULT_WIDTH=300;
	public static final int DEFAULT_HEIGHT=200;
	
}
class CustomEventPanel extends JPanel
{
	public CustomEventPanel()
	{
		y=0;
		circles=new ArrayList();
		Timer t=new Timer(100);
		TimerAction listener=new TimerAction();
		t.addTimerListener(listener);
	}
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		Graphics2D g2=(Graphics2D)g;
		g2.translate(0,y);
		for(int i=0;i<circles.size();i++)
		  g2.draw((Ellipse2D)circles.get(i));
	 }
		  private ArrayList circles;
		  private int y;
   private class TimerAction implements TimerListener
   { 
		   public void timeElapsed(TimerEvent event)
		    {
		  	if(getWidth()==0)return;
		  	int x=generator.nextInt(getWidth());
		  	Ellipse2D circle=new Ellipse2D.Double(x,-y,SIZE,SIZE);
		  	circles.add(circle);
		  	y++;
		  	repaint();
		    }
		  private Random generator=new Random();
		  private static final int SIZE=9;
	}
}
class TimerEvent extends AWTEvent
{
	public TimerEvent(Timer t){super(t,TIMER_EVENT);}
	public static final int TIMER_EVENT=AWTEvent.RESERVED_ID_MAX+5555;
}
interface TimerListener extends EventListener
{
	public void timeElapsed(TimerEvent event);
}
class Timer extends JComponent implements Runnable
{
	public Timer(int  i)
	{
		listenerList=new EventListenerList();
		interval=i;
		Thread t=new Thread(this);
		t.start();
	}
	public void addTimerListener(TimerListener listener)
	{
		listenerList.add(TimerListener.class,listener);
	}
	public void removeTimerListener (TimerListener listener)
	{
		listenerList.remove(TimerListener.class,listener);
	}
	public void run()
	{
		while(true)
		{
			try{Thread.sleep(interval);}
			catch(InterruptedException e){}
			TimerEvent event=new TimerEvent(this);
			EventQueue queue=Toolkit.getDefaultToolkit().getSystemEventQueue();
			queue.postEvent(event);
		}
	}
	public void processEvent(AWTEvent event)
	{
		if(event instanceof TimerEvent)
		{
			EventListener[] listeners=
			          listenerList.getListeners(TimerListener.class);
			for(int i=0;i<listeners.length;i++)
			 ((TimerListener)listeners[i]).timeElapsed((TimerEvent)event);
			 
		}
		else 
		   super.processEvent(event);
	}
	private int interval;
	private EventListenerList listeners;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -