PBO5 - Membuat Jam Sederhana dengan tampilan

TUGAS 5 - Pemrograman Berbasis Objek
Membuat Jam Sederhana, serta tampilan digitalnya dengan menggunakan class dengan Java dalam program BlueJ
Nama : Bastian Farandy
NRP : 05111740000190
Kelas : Pemrograman Berbasis Objek A

Source Code :

1. NumberDisplay
 /**  
  * Write a description of class NumberDisplay here.  
  *  
  * @author Bastian Farandy  
  * @version 0.000001  
  */  
 public class NumberDisplay  
 {  
   private int limit;  
   private int nilai;  
   //fungsi untuk memberikan nilai limit.  
   public NumberDisplay(int Maksimal)  
   {  
     limit = Maksimal;  
     nilai = 0;  
   }  
   //fungsi untuk mengembalikan nilai yang sekarang  
   public int getValue()  
   {  
     return nilai;  
   }  
   //fungsi untuk menambahkan nilai yang ditampilkan.  
   //Jika lebih dari limit yang diberikan, maka akan kembali ke 0.  
   public void increment()  
   {  
     nilai = (nilai + 1) % limit;  
   }  
   //mengembalikan nilai yang di tampilkan (jika kurang dari 10, maka akan ditambahkan 0 di depannya.  
   //(ex. 7 -> 07)  
   public String getDisplayValue()  
   {  
     if(nilai < 10)  
     {  
       return "0" + nilai;  
     }  
     else  
     {  
       return "" + nilai;  
     }  
   }  
   //mengatur nilai yang akan ditampilkan.  
   //Jika kurang dari 0 atau melebihi batas (>59) maka akan diabaikan.  
   public void setValue(int replacementValue)  
   {  
     if((replacementValue >= 0) && (replacementValue < limit))  
     {  
       nilai = replacementValue;  
     }  
   }  
 }  

2. ClockDisplay
 /**  
  * Write a description of class ClockDisplay here.  
  *  
  * @author Bastian Farandy  
  * @version 0.00001  
  */  
 public class ClockDisplay  
 {  
   private NumberDisplay jam;  
   private NumberDisplay menit;  
   private String displayString; //mensimulasikan layar sebenarnya.  
   //fungsi untuk membuat objek ClockDisplay.  
   //membuat clock baru dengan nilai awal 00:00.  
   public ClockDisplay()  
   {  
     jam = new NumberDisplay(24);  
     menit = new NumberDisplay(60);  
     updateDisplay();  
   }  
   //fungsi untuk membuat clock dengan nilai yang spesifik.  
   //spesifik baik jam maupun menit.  
   public ClockDisplay(int hour, int minute)  
   {  
     jam = new NumberDisplay(24);  
     menit = new NumberDisplay(60);  
     setTime(hour,minute);  
   }  
   //fungsi yang dipanggil setiap menit.  
   //Sehingga pada tampilan akan diperbaharui setiap 1 menit.  
   public void timeTick()  
   {  
     menit.increment();  
     if(menit.getValue() == 0)  
     {  
       jam.increment();  
     }  
     updateDisplay();  
   }  
   //fungsi untuk mengatur tampilan clock dengan spesifik pada jam dan menitnya.  
   public void setTime(int hour, int minute)  
   {  
     jam.setValue(hour);  
     menit.setValue(minute);  
     updateDisplay();  
   }  
   //fungsi untuk ,mengambil nilai yang sekarang ditampilkan  
   //dengan format HH:MM.  
   public String getTime()  
   {  
     return displayString;  
   }  
   //fungsi untuk memperbaharui string yang merepresentasikan tampilan.  
   private void updateDisplay()  
   {  
     displayString = jam.getDisplayValue() + ":" + menit.getDisplayValue();  
   }  
 }  

3. TestClockDisplay
 public class TestClockDisplay  
 {  
   public TestClockDisplay()  
   {  
   }  
   public void test()  
   {  
     ClockDisplay clock = new ClockDisplay();  
     clock.setTime(23,24);  
     System.out.println(clock.getTime());  
     clock.setTime(9,30);  
     System.out.println(clock.getTime());  
   }  
 }  

4. ClockGUI (tampilan menit dan detiknya)
 /**  
  * Write a description of class ClockGUI here.  
  *  
  * @author Bastian Farandy  
  * @version 0.000001  
  */  
 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->start());  
     toolbar.add(startButton);  
     //membuat tombol Stop untuk menghentikan jam.  
     JButton stopButton = new JButton("Stop");  
     stopButton.addActionListener(e->stop());  
     toolbar.add(stopButton);  
     //membuat tombol Step untuk menambah 1 menit pada jam.  
     JButton stepButton = new JButton("Step");  
     stepButton.addActionListener(e->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->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  
   {  
     //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)  
         {  
         }  
     }  
   }  
 }  

Tampilan :


Setelah menjalankan TestClockDisplay

Tampilan setelah menjalankan ClockGUI

Setelah menekan tombol start, kemudian di detik 41 menekan tombol stop.

Comments

Popular posts from this blog

PWEB5 - Membuat Form Pembayaran Air

EAS - PWEB - Membuat Sistem PPDB Online

MPPLC - FP