Tugas Rumah Digital Clock

Pada pertemuan minggu lalu, kelas kami diberi Tugas Rumah yaitu Membuat Program Digital Clock yang terdiri dari Class Number Display, Clock Display, Test Clock Display yang digunakan untuk melakukan testing dan juga Class Clock GUI.

Berikut ini merupakan class-class yang saya gunakan.


Berikut ini merupakan Class Number Display


  /**   
  * Class NumberDisplay.   
  * Nama : Lutfiyanti  
  * NRP : 05111740000036   
  * Kelas: PBO - B   
  * Sabtu,29 September 2018   
  */   
  /**   
  * The NumberDisplay class represents a digital number   
  * display that can hold values from zero to a given limit.   
  * The limit can be specified when creating the display. The   
  * values range from zero (inclusive) to limit-1. If used, for   
  * example, for the seconds on a digital clock, the limit   
  * would be 60, resulting in display values from 0 to 59.   
  * When incremented, the display automatically rolls over to   
  * zero when reaching the limit.   
  */   
  public class NumberDisplay   
  {   
   private int limit;   
   private int value;   
  /**   
  * Constructor for objects of class NumberDisplay   
  */   
  public NumberDisplay(int rollOverLimit)   
  {   
   limit = rollOverLimit;   
   value = 0;   
  }   
  /**   
  * Return the current value.   
  */   
  public int getValue()   
  {   
   return value;   
  }   
  /**   
  * Set the value of the display to the new specified   
  * value. If the new value is less than zero or over the   
  * limit, do nothing.   
  */   
  public void setValue(int replacementValue)   
  {   
   if((replacementValue >= 0) && (replacementValue < limit))    
   {   
    value = replacementValue;   
   }   
  }   
  /**   
  * Return the display value (that is, the current value   
  * as a two-digit String. If the value is less than ten,   
  * it will be padded with a leading zero).   
  */   
  public String getDisplayValue()   
  {   
   if(value < 10)    
   {   
    return "0" + value;   
   }   
  else    
   {   
    return "" + value;   
   }   
  }   
  /**   
  * Increment the display value by one, rolling over to zero if   
  * the limit is reached.   
  */   
  public void increment()   
   {   
    value = (value + 1) % limit;   
   }   
  }   

Class ClockDisplay


  /**   
  * Class ClockDisplay.   
  * Nama : Lutfiyanti   
  * NRP : 05111740000036   
  * Kelas: PBO - B   
  * Sabtu,29 September 2018   
  */   
  /**   
  * The ClockDisplay class implements a digital clock display   
  * for a European-style 24-hour clock. The clock shows hours   
  * and minutes.   
  * The range of the clock is 00:00 (midnight) to 23:59 (one   
  * minute before midnight).   
  *   
  * The clock display receives "ticks" (via the timeTick   
  * method) every minute and reacts by incrementing the   
  * display. This is done in the usual clock fashion: the hour   
  * increments when the minutes roll over to zero.   
  */   
  public class ClockDisplay   
  {   
   private NumberDisplay hours;   
   private NumberDisplay minutes;   
   private String displayString; // simulates the actual display   
  /**   
  * Constructor for ClockDisplay objects. This constructor   
  * creates a new clock set at 00:00.   
  */   
  public ClockDisplay()   
  {   
   hours = new NumberDisplay(24);   
   minutes = new NumberDisplay(60);   
   updateDisplay();   
  }   
  /**   
  * Constructor for ClockDisplay objects. This constructor   
  * creates a new clock set at the time specified by the   
  * parameters.   
  */   
  public ClockDisplay(int hour, int minute)   
  {   
   hours = new NumberDisplay(24);   
   minutes = new NumberDisplay(60);   
   setTime(hour, minute);   
  }   
  /**   
  * This method should get called once every minute - it   
  * makes the clock display go one minute forward.   
  */   
  public void timeTick()   
  {   
   minutes.increment();   
   if(minutes.getValue() == 0)    
   { // it just rolled over!   
    hours.increment();   
   }   
   updateDisplay();   
  }   
  /**   
  * Set the time of the display to the specified hour and   
  * minute.   
  */   
  public void setTime(int hour, int minute)   
  {   
   hours.setValue(hour);   
   minutes.setValue(minute);   
   updateDisplay();   
  }   
  /**   
  * Return the current time of this display in the format   
  * HH:MM.   
  */   
  public String getTime()   
  {   
   return displayString;   
  }   
  /**   
  * Update the internal string that represents the   
  * display.   
  */   
  private void updateDisplay()   
  {   
   int hour = hours.getValue();   
   String suffix;   
   if(hour >= 12)   
   {   
    suffix = "pm";   
   }   
   else   
   {   
    suffix = "am";   
   }   
   if(hour >= 12)   
   {   
    hour -= 12;   
   }   
   if(hour == 0)   
   {   
    hour =12;   
   }   
   displayString = hour + ":" +   
   minutes.getDisplayValue() + suffix;   
  }   
  }   



Class TestClockDisplay




  /**   
  * Class : TestClockDisplay.   
  * Nama : Lutfiyanti   
  * NRP : 05111740000036   
  * Kelas: PBO - B   
  * Sabtu,29 September 2018   
  */    
  public class TestClockDisplay   
  {   
   public void test()   
   {   
    ClockDisplay clock = new ClockDisplay();   
    clock.setTime(0,0);   
    System.out.println(clock.getTime());   
    clock.setTime(9,45);   
    System.out.println(clock.getTime());   
    clock.setTime(20,30);   
    System.out.println(clock.getTime());   
    clock.setTime(23,59);   
    System.out.println(clock.getTime());   
   }   
  }   

Berikut adalah hasil dari TestClockDisplay





Class ClockGUI




  /**   
  * Class : ClockGUI.   
  * Nama : Lutfiyanti   
  * NRP : 05111740000036   
  * Kelas: PBO - B   
  * Sabtu,29 September 2018   
  */    
  import javax.swing.*;   
  import javax.swing.border.*;   
  import java.awt.*;   
  import java.awt.event.*;   
  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 showTentang()    
   {    
   JOptionPane.showMessageDialog (frame, "Jam Digital\n" +    
   "Jam digital dengan Bahasa Java.",    
   "Tentang",   
   JOptionPane.INFORMATION_MESSAGE);    
   }    
   private void quit()    
   {    
   System.exit(0);    
   }    
   private void makeFrame()    
   {    
   frame = new JFrame("Jam");    
   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("Tentang Jam...");    
   item.addActionListener(e->showTentang());    
   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();    
     tunda();    
    }    
    }    
    private void tunda()    
    {    
    try    
    {    
     Thread.sleep(900);    
    }    
    catch(InterruptedException exc)    
    {    
    }    
   }    
   }    
  }   


Tampilan awal setelah program dijalankan adalah seperti di bawah.


Kemudian saya klik Start maka waktu akan berjalan dan saya stop







Nama : Lutfiyanti
Nrp : 05111740000036
Kelas : PBO B



Komentar

Postingan populer dari blog ini

Indonesia Modern di Era Digital dengan Penerapan Teknologi Berbasis Internet

Game Pong Menggunakan Java

TUGAS 4 PBO- B -- REMOTE TV