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

📄 46.txt

📁 是一个 java 基础学习软件 有设计说明
💻 TXT
字号:
//
事件队列测试
//
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.event.*;

// 显示框架,并得到屏幕像素

public class TimerTest
{
   public static void main(String[] args)
   {
      EventFrame frame = new EventFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	  frame.show();
	  frame.addWindowListener(new
	  		WindowAdapter()
	  		{
				public void windowClosing(WindowEvent e)
				{
					System.exit(0);
				}
			});
	}
}

//  define Frame

class EventFrame extends JFrame
{
   public EventFrame()
   {
      setSize(WIDTH, HEIGHT);
      setTitle("事件队列测试");
   		//  create a panel
   	  EventPanel panel = new EventPanel();
   	  Container contentPane = getContentPane();  // add panel to frame
   	  contentPane.add(panel);

   }

   public static final int WIDTH = 500;
   public static final int HEIGHT = 400;

}

//  define panel

class EventPanel extends JPanel
{
	//private String s ;

	public EventPanel()
	{
		y = 0;
		circles = new ArrayList();

		Timer t = new Timer(100);

		TimerAction listener = new TimerAction();

		t.addTimerListener(listener);
		//t.run();
	}

	public void paintComponent(Graphics g)
	{
		super.paintComponent (g);
		Graphics2D g2 = (Graphics2D) g;
		//translate the origin to create illusion of falling drops
		g2.translate(0,y);
		//draw all circles
		g2.setPaint(Color.red);
		for (int i = 0; i< circles.size();i++)
			g2.draw((Ellipse2D)circles.get(i));
	}

	private int y;
	private ArrayList circles;

	private class TimerAction implements TimerListener
	{
		public TimerAction(){}
		public void timeElapsed(TimerEvent e)
		{
			if (getWidth()==0) return ;  //panel not shown
			// add another circle
			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;
	}
}

//  event class
class TimerEvent extends AWTEvent
{
	public TimerEvent(Timer t )
	{
		super(t,TIMER_EVENT);
	}
	public static final int TIMER_EVENT = RESERVED_ID_MAX + 5555;
}
//listener interface
interface TimerListener extends EventListener
{
	public void timeElapsed (TimerEvent e);
}


// Timer class that is the source  of timer events
class Timer extends JComponent implements Runnable
{
	public Timer (int i )
	{
		listenerList = new EventListenerList ();
		interval = i;
		Thread t = new Thread (this );
		t.start();
	}

	private int interval ;
	private EventListenerList listeners;
	// add timer listener
	public void addTimerListener(TimerListener listener)
	{
		listenerList.add(TimerListener.class , listener );
	}
	// removes timer listener
	public void removeTimerListener(TimerListener listener)
		{
			listenerList.remove(TimerListener.class , listener );
	}

	//posts new timer event <code> interval  </code> milliseconds

	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 e)
	{
		if(e instanceof TimerEvent)
		{
			EventListener[] listeners =listenerList.getListeners(TimerListener.class );
			for (int i = 0; i<listeners.length;i++)
				((TimerListener)listeners[i]).timeElapsed((TimerEvent)e);
		}
		else
			super.processEvent(e);
	}
}

⌨️ 快捷键说明

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