Jumat, 28 September 2018

Membuat Jam Digital
Nama : Chaniyah Zulfa Mukhlishah
NRP   : 05111740000115
Kelas  : PBO-B
  
  Tugas rumah kali ini adalah membuat jam digital dengan bahasa java melalui BlueJ. Tampilan jam ini seperti stopwatch atau timer dimana kita dapat menghitung durasi kejadian yang kita inginkan. Awalnya, menit dan detik pada clock akan di set nol, seperti pada gambar :


Jika kita mengklik tombol 'start', maka timer akan berjalan menghitung kejadian yang diinginkan. Jika waktu timer berjalan dirasa cukup, kita bisa menghentikannya dengan mengklik tombol 'stop'. Lalu, tombol 'step' adalah jika kita ingin perhitungan manual. setiap kita menekan tombol 'step', maka terjadi penambahan '1' pada detik clock. Contoh ketika kita mengklik tombol 'start', lalu mengstopnya dengan klik 'stop', seperti gambar berikut :


Lalu, saya mencoba menampilkan(mendisplay) jam yang sudah saya set pada suatu class yang bernama Test Clock Display, seperti ini :


Nah, untuk menghasilkan semua itu, kita memerlukan 4 class, yaitu :
- Class Numb_Display = Memulai jam dari 0 dan memberi limit atau batasan maksimal jam bisa berjalan
- Class TestClockDisplay = Memberikan tes atau jam yang ingin ditampilkan
- Class Clock_Display = Menge.set time jam dan menit, juga mengatur agar bisa diincrement
- Class ClockGUI = Memberikan tampilan apik sehingga terdapat tombol-tombol untuk menjalankan perintah


Berikut, adalah hasil source code dari setiap class,
1.) Class Numb_Display

 /**  
  * Source Code Numb_Display  
  *  
  * @author (Chaniyah Zulfa)  
  * @version (7.0/180929)  
  */  
 public class Numb_Display    
  {    
   private int limit;    
   private int fix;    
   public Numb_Display(int Maksimal)    
   {    
   limit = Maksimal;    
   fix = 0;    
   }    
   public int Value_Now()    
   {    
   return fix;    
   }    
   public void increment()    
   {    
   fix = (fix + 1) % limit;    
   }    
   public String getDisplayValue()    
   {    
   if(fix < 10)    
   {    
    return "0" + fix;    
   }    
   else    
   {    
    return "" + fix;    
   }    
   }    
   public void setValue(int replacementValue)    
   {    
   if((replacementValue >= 0) && (replacementValue < limit))    
   {    
    fix = replacementValue;    
   }    
   }    
  }   

2.) Class TestClockDisplay


 /**  
  * Source Code TestClockDisplay  
  *  
  * @author (Chaniyah Zulfa)  
  * @version (7.0/180929)  
  */  
 public class TestClockDisplay    
  {    
   public TestClockDisplay()    
   {    
   }    
   public void test()    
   {    
   Clock_Display cl = new Clock_Display();    
   cl.setTime(22,37);    
   System.out.println(cl.getTime());    
   cl.setTime(5,59);    
   System.out.println(cl.getTime());  
   cl.setTime(14,00);    
   System.out.println(cl.getTime());  
   cl.setTime(00,17);    
   System.out.println(cl.getTime());  
   }    
  }    

3.) Class Clock_Display


 /**  
  * Source Code Clock_Display  
  *  
  * @author (Chaniyah Zulfa)  
  * @version (7.0/180929)  
  */  
 public class Clock_Display    
  {    
   private Numb_Display hour;    
   private Numb_Display minute;    
   private String displayString;   
   public Clock_Display()    
   {    
   hour = new Numb_Display(24);    
   minute = new Numb_Display(60);    
   updateDisplay();    
   }    
   public Clock_Display(int jam, int menit)    
   {    
   hour = new Numb_Display(24);    
   minute = new Numb_Display(60);    
   setTime(jam,menit);    
   }    
   public void timeTick()    
   {    
   minute.increment();    
   if(minute.Value_Now() == 0)    
   {    
    hour.increment();    
   }    
   updateDisplay();    
   }    
   public void setTime(int jam, int menit)    
   {    
   hour.setValue(jam);    
   minute.setValue(menit);    
   updateDisplay();    
   }    
   public String getTime()    
   {    
   return displayString;    
   }    
   private void updateDisplay()    
   {    
   displayString = hour.getDisplayValue() + ":" + minute.getDisplayValue();    
   }    
  }    

4.) Class ClockGUI


 /**  
  * Source Code ClockGUI   
  *  
  * @author (Chaniyah Zulfa)  
  * @version (7.0/180929)  
  */  
  import java.awt.*;    
  import java.awt.event.*;    
  import javax.swing.*;    
  import javax.swing.border.*;    
  public class ClockGUI    
  {    
   private JFrame frame;    
   private JLabel label;    
   private Clock_Display clock;    
   private boolean clockOn = false;    
   private TimerThread timerThread;    
   public void Clock()    
   {    
   makeFrame();    
   clock = new Clock_Display();    
   }    
   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)    
    {    
    }    
   }    
   }    
  }   

Thanks all :)

Tidak ada komentar:

Posting Komentar