/** * ClockPanel. * * @author John Paxton * @version November 21, 2008 */ import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JTextField; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class ClockPanel extends JPanel { ClockPanel() { hour = 0; minute = 0; add (new JLabel("Hour: ")); hours = new JTextField(10); add (hours); add (new JLabel("Minute: ")); minutes = new JTextField(10); add (minutes); add (createButton("Draw Clock")); setBackground(Color.white); } public void paintComponent (Graphics g) { Graphics2D g2 = (Graphics2D) g; double radians; super.paintComponent(g); g2.setColor(Color.black); g2.drawOval(150, 150, 200, 200); g2.setColor(Color.blue); radians = minute / 60.0 * 2 * Math.PI - Math.PI / 2; drawHand(radians, 100, g2); g2.setColor(Color.red); radians = (hour * 60.0 + minute) / (12 * 60) * 2 * Math.PI - Math.PI / 2; drawHand(radians, 50, g2); } private void drawHand (double radians, int size, Graphics2D g2) { g2.drawLine(250, 250, (int) (250 + Math.cos(radians) * size), (int) (250 + Math.sin(radians) * size)); } private JButton createButton (String label) { JButton result = new JButton(label); class AddActionListener implements ActionListener { public void actionPerformed(ActionEvent evt) { hour = Integer.parseInt(hours.getText()); minute = Integer.parseInt(minutes.getText()); repaint(); } } result.addActionListener(new AddActionListener()); return result; } private JTextField hours; private JTextField minutes; private int hour; private int minute; }