Digital Clock with Blue J
Class Needed :
ClockDisplay,
TestClockDisplay,
ClockGUI,
NumberDisplay
Sourcecodes :
Class ClockDisplay
Class TestClockDisplay
Class NumberDisplay
Class ClockGUI
ClockDisplay,
TestClockDisplay,
ClockGUI,
NumberDisplay
Sourcecodes :
Class ClockDisplay
/** * @version X */ public class ClockDisplay { private NumberDisplay jam; private NumberDisplay menit; private String displayString; public ClockDisplay() { jam = new NumberDisplay(24); menit = new NumberDisplay(60); updateDisplay(); } public ClockDisplay(int hour, int minute) { jam = new NumberDisplay(24); menit = new NumberDisplay(60); setTime(hour,minute); } public void timeTick() { menit.increment(); if(menit.getValue() == 0) { jam.increment(); } updateDisplay(); } public void setTime(int hour, int minute) { jam.setValue(hour); menit.setValue(minute); updateDisplay(); } public String getTime() { return displayString; } private void updateDisplay() { displayString = jam.getDisplayValue() + ":" + menit.getDisplayValue(); } }
Class TestClockDisplay
/** * @version X */ public class TestClockDisplay { public TestClockDisplay() { } public void test() { ClockDisplay clock = new ClockDisplay(); clock.setTime(13,30); System.out.println(clock.getTime()); clock.setTime(15,21); System.out.println(clock.getTime()); clock.setTime(17,54); System.out.println(clock.getTime()); } }
Class NumberDisplay
/** * @version X */ public class NumberDisplay { private int limit; private int nilai; public NumberDisplay(int Maksimal) { limit = Maksimal; nilai = 0; } public int getValue() { return nilai; } public void increment() { nilai = (nilai + 1) % limit; } public String getDisplayValue() { if(nilai < 10) { return "0" + nilai; } else { return "" + nilai; } } public void setValue(int replacementValue) { if((replacementValue >= 0) && (replacementValue < limit)) { nilai = replacementValue; } } }
Class ClockGUI
/** * @version X */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class ClockGUI { private JFrame frame; private JLabel label; private ClockDisplay clock; private boolean clockOn = false; private TimerThread timerThread; public void Clock() { makeFrame(); clock = new ClockDisplay(); } private void start() { clockOn = true; timerThread = new TimerThread(); timerThread.start(); } private void stop() { clockOn = false; } private void step() { clock.timeTick(); label.setText(clock.getTime()); } private void showAbout() { JOptionPane.showMessageDialog (frame, "Clock Version1.0\n" + "Membuat jam digital simpel dengan Java.", "About Clock", JOptionPane.INFORMATION_MESSAGE); } private void quit() { System.exit(0); } private void makeFrame() { frame = new JFrame("Clock"); JPanel contentPane = (JPanel)frame.getContentPane(); contentPane.setBorder(new EmptyBorder(1,60,1,60)); makeMenuBar(frame); contentPane.setLayout(new BorderLayout(12,12)); label = new JLabel("00:00", SwingConstants.CENTER); Font displayFont = label.getFont().deriveFont(96.0f); label.setFont(displayFont); contentPane.add(label, BorderLayout.CENTER); JPanel toolbar = new JPanel(); toolbar.setLayout(new GridLayout(1,0)); JButton startButton = new JButton("Start"); startButton.addActionListener(e->start()); toolbar.add(startButton); JButton stopButton = new JButton("Stop"); stopButton.addActionListener(e->stop()); toolbar.add(stopButton); JButton stepButton = new JButton("Step"); stepButton.addActionListener(e->step()); toolbar.add(stepButton); JPanel flow = new JPanel(); flow.add(toolbar); contentPane.add(flow, BorderLayout.SOUTH); frame.pack(); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2); frame.setVisible(true); } private void makeMenuBar(JFrame frame) { final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); JMenuBar menubar = new JMenuBar(); frame.setJMenuBar(menubar); JMenu menu; JMenuItem item; menu = new JMenu("File"); menubar.add(menu); item = new JMenuItem("About Clock..."); item.addActionListener(e->showAbout()); menu.add(item); menu.addSeparator(); item = new JMenuItem("Quit"); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,SHORTCUT_MASK)); item.addActionListener(e->quit()); menu.add(item); } class TimerThread extends Thread { public void run() { while(clockOn) { step(); pause(); } } private void pause() { try { Thread.sleep(1200); } catch(InterruptedException exc) { } } } }
Komentar
Posting Komentar