Java tutorial
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(); } }