package dt; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.GridLayout; import javax.swing.JFrame; public class ClockTester implements ClockDelegate { public JFrame createFrame(String title) { Clock clock1 = new Clock(); clock1.setDelegate(this); clock1.start(); Clock clock2 = new Clock(0, 0, 0); clock2.setDelegate(this); clock2.start(); Clock clock3 = new Clock(0, 0, 0); clock3.setDelegate(this); clock3.start(); Clock clock4 = new Clock(23, 59, 50); clock4.setDelegate(this); clock4.start(); JFrame frame = new JFrame(title); frame.setLayout(new GridLayout(0, 1)); frame.add(clock1.createComponent()); frame.add(clock2.createComponent()); frame.add(clock3.createComponent()); frame.add(clock4.createComponent()); return frame; } public void clockStarted(Clock clk) { System.out.println("[started]"); } public void clockStopped(Clock clk) { System.out.println("[stopped]"); } private static void createAndShowGUI() { JFrame.setDefaultLookAndFeelDecorated(true); ClockTester tester = new ClockTester(); JFrame frame = tester.createFrame("Clock"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int width = screenSize.width / 3; int height = screenSize.height / 4; int x = (screenSize.width - width) / 2; int y = (screenSize.height - height) / 3; frame.setLocation(x, y); frame.setResizable(true); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }