Tugas Jam Digital

Nama : Edgar Andrew Hutauruk
NRP : 05111740000166
Kelas : PBO-B
















Class ClockGUI
 import java.awt.*;    
 import java.awt.event.*;    
 import javax.swing.*;    
 import javax.swing.border.*;   
 /**  
  * Write a description of class Clock here.  
  *  
  * @author (your name)  
  * @version (a version number or a date)  
  */  
 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 Version 0.1\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(900);    
       }    
       catch(InterruptedException exc)    
       {    
       }    
     }    
   }    
  }    


Class ClockDisplay
 /**  
  * Write a description of class ClockDisplay here.  
  *  
  * @author (your name)  
  * @version (a version number or a date)  
  */  
 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 NumberDisplay
 /**  
  * Write a description of class Clock here.  
  *  
  * @author (your name)  
  * @version (a version number or a date)  
  */  
 public class NumberDisplay  
 {  
   private int limit;    
   private int value;    
   public NumberDisplay(int Maksimal)    
   {    
     limit = Maksimal;    
     value = 0;    
   }    
   public int getValue()    
   {    
     return value;    
   }      
   public String getDisplayValue()    
   {    
     if(value < 10)    
     {    
       return "0" + value;    
     }    
     else    
     {    
       return "" + value;    
     }    
   }    
   public void setValue(int replacementValue)    
   {    
     if((replacementValue >= 0) && (replacementValue < limit))    
     {    
       value = replacementValue;    
     }    
   }    
    public void increment()    
   {    
     value = (value + 1) % limit;    
   }   
 }  

Komentar