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 - 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 ...

APSI-TUGAS 1 Sistem Informasi IndoPremier

NAMA: Bobbi Aditya NRP: 05111740000099 KELAS: APSI C Sistem informasi yang saya gunakan adalah IndoPremier. IndoPremier adalah perusahaan penyedia jasa keuangan terintegrasi di bidang pasar modal yang melayani klien individu maupun korporasi. Melalui anak perusahaannya (PT Indo Premier Investment Management), IndoPremier mengembangkan bisnis aset manajemennya. Dan menyadari bahwa salah satu kompetensi utama IndoPremier adalah pengembangan teknologi, maka pada tahun 2007, diluncurkan Exchange Traded Fund saham pertama di Indonesia. Secara singkat, IndoPremier adalah salah satu sekuritas yang bisa dipakai oleh masyarakt Indonesia untuk melakukan trading saham. Fasilitas dari IndoPremier adalah: IPOTGO (Web Investasi) IPOTKU(Cara Modern Menabung) IPOTFUND(Investasi Reksadana) IPOTSTOCK(Investasi Saham) IPOTNEWS(Web Berita Investasi) Sistem Informasi pada umumnya memiliki bagan seperti di bawah ini Pada IndoPremier, sistem informasi ini juga berlaku, penjelasanny...