Skip to main content

PBO-5 Membuat Jam Digital

Pada tugas kali ini, saya mencoba untuk membuat jam digital beserta GUI nya.

saya membuat 4 class dalam membuat tugas ini:

classs pertama adalah Number Display, nerikut kodingannya
 /**  
  * Write a description of class NumberDisplay here.  
  *  
  * @author Bobbi Aditya  
  * @version 1.0  
  */  
 public class NumberDisplay  
 {  
   private int limit;  
   private int nilai;  
  public NumberDisplay(int maksimal)  
   {  
     limit = maksimal;  
     nilai = 0;  
   }  
  public int getValue()  
   {  
   return nilai;  
   }  
  public void increment()  
  {  
    nilai = (nilai + 1) % limit;  
  }  
  public String getDisplayValue()  
  {  
    if(nilai<10)  
    {  
      return "0" + nilai;   
    }  
    else  
    {  
      return "" + nilai;  
    }  
  }  
  public void setValue (int replacementValue)  
  {  
    if((replacementValue>=0)&&(replacementValue<limit))  
    {  
      nilai=replacementValue;  
    }  
   }  
  }  
Class kedua adalah TestClockDisplay, berikut kodingannya:
 /**  
  * Write a description of class TestDisplay here.  
  *  
  * @author Bobbi  
  * @version 1.00  
  */  
  public class TestClockDisplay   
  {   
   public TestClockDisplay()   
   {   
   }   
   public void test()   
   {   
    ClockDisplay clock = new ClockDisplay();   
    clock.setTime(23,59);   
    System.out.println(clock.getTime());   
    clock.setTime(9,30);   
    System.out.println(clock.getTime());  
    clock.setTime(12,15);   
    System.out.println(clock.getTime());  
    clock.setTime(20,01);   
    System.out.println(clock.getTime());  
   }   
  }  
Class ketiga adalah Clock Display, berikut Kodingannya
 /**  
  * Write a description of class ClockDisplay here.  
  *  
  * @author Bobbi  
  * @version 1.00  
  */  
 public class ClockDisplay  
 {  
   private NumberDisplay jam;  
   private NumberDisplay menit;  
   private String displayString;  
   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();   
   }   
   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();   
   }  
 }  
Class ke empat adalah Clock GUI, berikut kodingannya
 /**   
  * Write a description of class ClockGUI here.   
  *   
  * @author Bobbi Aditya  
  * @version 1.0  
  */   
  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 Version1.0\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)   
      {   
      }   
    }   
   }   
  }   
Berikut hasil dari BlueJ saya:

Berikut hasil jika testclockdisplay dijalankan
Berikut hasil jiga ClockGUI dijalankan

Nama : Bobbi Aditya
Kelas : PBO - A
NRP : 05111740000099

Comments

Popular posts from this blog

MPPL 9 - Manajemen Biaya

Kelas : MPPL C Jeremy Vijay - 05111740000062 Raja Permata Boy - 05111740000070 Bobbi Aditya - 05111740000099 Samuel Marcellinus - 05111740000134 Bastian Farandy - 05111740000190 Link Spreadsheet : SpreadSheet

MPPL - Pengalaman proyek

Nama : Bobbi Aditya Kelas : MPPL-C NRP : 05111740000099 Berikut ini adalah proyek yang saya ketahui Nama Proyek :   Pembangunan Aplikasi MSO (Maintenance System Online) Berbasis Web Deskripsi : Aplikasi ini berguna untuk pemantauan alat-alat yang ada pada PT. Semen Indonesia - Gresik apabila terjadi kerusakan yang harus segera dilaporkan, atau terdapat jadwal pemeliharaan rutin. Lokasi : PT. Semen Indonesia (Persero) Tbk. - Gresik Jl. Veteran, Gresik Jawa Timur, 61122 Waktu Proyek: 02 - 31 Januari 2019 Tim yang terlibat: Almas Aqmarina 05111640000171 Daniel Kurniawan 0511164000081 Produk yang dihasilkan: Sebuah aplikasi yang berada di dalam server Semen Indonesia yang berguna untuk melakukan pemantuan terhadap alat-alat yang ada pada PT. Semen Indonesia. Untuk addressnya tidak bisa diakses dari luar jaringan PT. Semen Indonesia. Fitur: • Tabel Laporan Harian • Pengelolaan Laporan Harian (tambah, ubah, hapus) • Unduh dala