PBO 5-Membuat Simulasi Jam

Tugas 5 PBO-A
Pada kali ini saya akan membuat simulasi jam digital menggunakan bahasa Java.
Disini saya menggunakan 4 kelas yaitu:

  1. NumberDisplay
  2. ClockDisplay
  3. TestClockDisplay
  4. ClockGUI

  • NumberDisplay

 /**  
  * Write a description of class NumberDisplay here.  
  * Samuel Marcellinus  
  * NRP 05111740000134  
  * PBO-A  
  */  
 public class NumberDisplay  
 {  
   private int limit;  
   private int value;  
   public NumberDisplay(int rollOverLimit)  
   {  
     limit = rollOverLimit;  
     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;  
   }  
 }  

  • ClockDisplay

 /**  
  * Write a description of class ClockDisplay here.  
  * Samuel Marcellinus  
  * NRP 05111740000134  
  * PBO A  
  */  
 public class ClockDisplay {  
   private NumberDisplay hours;  
   private NumberDisplay minutes;  
   private String displayString;  
   public ClockDisplay()  
   {  
     hours = new NumberDisplay(24);  
     minutes = new NumberDisplay(60);  
     updateDisplay();  
   }  
   public ClockDisplay(int hour, int minute)  
   {  
     hours = new NumberDisplay(24);  
     minutes = new NumberDisplay(60);  
     setTime(hour, minute);  
   }  
   public void timeTick()  
   {  
     minutes.increment();  
     if(minutes.getValue() == 0)  
     {  
       hours.increment();  
     }  
     updateDisplay();  
   }  
   public void setTime(int hour, int minute)  
   {  
     hours.setValue(hour);  
     minutes.setValue(minute);  
     updateDisplay();  
   }  
   public String getTime()  
   {  
     return displayString;  
   }  
   private void updateDisplay()  
   {  
     displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue();  
   }  
 }  

  • TestClockDisplay

 /**  
  * Write a description of class TestClockDisplay here.  
  * Samuel Marcellinus  
  * NRP 05111740000134  
  * PBO A  
  */  
 public class TestClockDisplay  
 {  
   public TestClockDisplay()  
   {  
   }  
   public void test()  
   {  
     ClockDisplay clock = new ClockDisplay();  
     clock.setTime(22,59); 
     System.out.println(clock.getTime());  
     clock.setTime(12,25);  
     System.out.println(clock.getTime());  
     clock.setTime(14,89);  
     System.out.println(clock.getTime());  
   }  
 }  

  • ClockGUI

 <pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGii8ExM3tlaXM7f2DPs95FRgiPqFr0bCejbB7yLIkBAyNFsnu1fjtBewWl6zvkjPN3-RL-nkcZlt5L9NULwVIwIKGbJltfnuNJi57OgM9Y8gLkDznyuZlvAXXEO_0LK3g9T5X5LUEAmR/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> /**    
  * Write a description of class ClockGUI here.    
  * Samuel Marcellinus   
  * NRP 05111740000134   
  * PBO A    
  */    
  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;    
   //fungsi untuk membuat sebuah objek dari class Clock    
   public void Clock()    
   {    
   makeFrame();    
   clock = new ClockDisplay();    
   }    
   //fungsi untuk memulai jam.    
   private void start()    
   {    
   clockOn = true;    
   timerThread = new TimerThread();    
   timerThread.start();    
   }    
   //fungsi untuk memberhentikan jam.    
   private void stop()    
   {    
   clockOn = false;    
   }    
   //fungsi untuk menjalankan jam secara perlahan (naik per menitnya).    
   private void step()    
   {    
   clock.timeTick();    
   label.setText(clock.getTime());    
   }    
   //fungsi untuk menampilkan program Clock ini.    
   private void showAbout()    
   {    
   JOptionPane.showMessageDialog (frame, "Clock Version 0.1\n" +    
   "Membuat jam digital simpel dengan Java.",    
   "About Clock",    
   JOptionPane.INFORMATION_MESSAGE);    
   }    
   //fungsi untuk keluar dari program.    
   private void quit()    
   {    
   System.exit(0);    
   }    
   //fungsi untuk membuat frame dan konten di dalamnya.    
   private void makeFrame()    
   {    
   frame = new JFrame("Clock");    
   JPanel contentPane = (JPanel)frame.getContentPane();    
   contentPane.setBorder(new EmptyBorder(1,60,1,60));    
   makeMenuBar(frame);    
   //secara spesifik mengatur tampilan dengan jarak.    
   contentPane.setLayout(new BorderLayout(12,12));    
   //membuat tampilan di tengah frame.    
   label = new JLabel("00:00", SwingConstants.CENTER);    
   Font displayFont = label.getFont().deriveFont(96.0f);    
   label.setFont(displayFont);    
   contentPane.add(label, BorderLayout.CENTER);    
   //membuat toolbar dengan tombol    
   JPanel toolbar = new JPanel();    
   toolbar.setLayout(new GridLayout(1,0));    
   //membuat tombol Start untuk memulai jam.    
   JButton startButton = new JButton("Start");    
   startButton.addActionListener(e-&gt;start());    
   toolbar.add(startButton);    
   //membuat tombol Stop untuk menghentikan jam.    
   JButton stopButton = new JButton("Stop");    
   stopButton.addActionListener(e-&gt;stop());    
   toolbar.add(stopButton);    
   //membuat tombol Step untuk menambah 1 menit pada jam.    
   JButton stepButton = new JButton("Step");    
   stepButton.addActionListener(e-&gt;step());    
   toolbar.add(stepButton);    
   //untuk memasukkan toolbar ke dalam panel disertai dengan jarak    
   JPanel flow = new JPanel();    
   flow.add(toolbar);    
   contentPane.add(flow, BorderLayout.SOUTH);    
   //menandakan bahwa frame sudah selesai - mengatur komponen di dalamnya    
   frame.pack();    
   //memposisikan frame di tengah layar serta menampilkannya    
   Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    
   frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);    
   frame.setVisible(true);    
   }    
   //fungsi yang membuat menubar di frame utama    
   private void makeMenuBar(JFrame frame)    
   {    
   final int SHORTCUT_MASK =    
   Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();    
   JMenuBar menubar = new JMenuBar();    
   frame.setJMenuBar(menubar);    
   JMenu menu;    
   JMenuItem item;    
   //membuat file menu    
   menu = new JMenu("File");    
   menubar.add(menu);    
   item = new JMenuItem("About Clock...");    
    item.addActionListener(e-&gt;showAbout());    
   menu.add(item);    
   menu.addSeparator();    
   item = new JMenuItem("Quit");    
    item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,SHORTCUT_MASK));    
    item.addActionListener(e-&gt;quit());    
   menu.add(item);    
   }    
   class TimerThread extends Thread    
   {    
   //fungsi saat jam sedang dijalankan.    
   public void run()    
    {    
    //selama jam jalan, maka akan dilakukan Step(menambah nilai setiap menitnya).    
    //pause (berhenti selama beberapa saat sehingga nilai sekarang dapat terlihat.    
    while(clockOn)    
    {    
     step();    
     pause();    
    }    
    }    
    private void pause()    
    {    
    try    
    {    
     Thread.sleep(900);    
    }    
    catch(InterruptedException exc)    
    {    
    }    
   }    
   }    
  }    
 </code></pre>  

Jika TestClockDisplay di run akan menjadi seperti ini:


Jika ClockGUI akan dijalankan maka akan menjadi stopwatch dengan tampilan seperti ini:


Comments

Popular posts from this blog

APSI 1 - Analisa Sistem Informasi Lazada

Tugas 3 PBKK