Mega Code Archive

 
Categories / Java / Event
 

Use the Event queue to retrieve event

import java.awt.AWTEvent; import java.awt.Container; import java.awt.EventQueue; import java.awt.Frame; import java.awt.Graphics; import java.awt.Point; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class EventQueuePanel extends JPanel implements ActionListener {   EventQueuePanel() {     JButton button = new JButton("Draw line");     add(button);     button.addActionListener(this);   }   public void actionPerformed(ActionEvent evt) {     Graphics g = getGraphics();     displayPrompt(g, "Click to chooose the first point");     Point p = getClick();     g.drawOval(p.x - 2, p.y - 2, 4, 4);     displayPrompt(g, "Click to choose the second point");     Point q = getClick();     g.drawOval(q.x - 2, q.y - 2, 4, 4);     g.drawLine(p.x, p.y, q.x, q.y);     displayPrompt(g, "Done! Press button the start again.");     g.dispose();   }   public void displayPrompt(Graphics g, String s) {     y += 20;     g.drawString(s, 0, y);   }   public Point getClick() {     EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();     while (true) {       try {         AWTEvent evt = eq.getNextEvent();         if (evt.getID() == MouseEvent.MOUSE_PRESSED) {           MouseEvent mevt = (MouseEvent) evt;           Point p = mevt.getPoint();           Point top = getRootPane().getLocation();           p.x -= top.x;           p.y -= top.y;           return p;         }       } catch (InterruptedException e) {       }     }   }   private int y = 60;   public static void main(String[] args) {     JFrame frame = new JFrame();     frame.setTitle("EventQueueTest");     frame.setSize(300, 200);     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     Container contentPane = frame.getContentPane();     contentPane.add(new EventQueuePanel());     frame.show();   } }