Tik Tok?! Bukan aplikasi yang lagi naik daun, tapi program Java?



Pada kelas minggu ini, saya belajar cara untuk membuat sebuah jam digital dengan bantuan BlueJ! Tampilan jam digital ini sangat sederhana, mengingat saya baru mempelajarinya.

Tampilan



Source Code

NumberDisplay

 /*  
  * @author Indira Nursyamsina Hazimi  
  */   
  public class NumberDisplay   
  {   
   private int limit;   
   private int sum;//nilai jam atau menit   
   //mengatur limit jam dan menit  
   public NumberDisplay(int max)   
   {   
    limit=max;   
    sum=0;   
   }   
   //method untuk return nilai sekarang   
   public int getValue()   
   {   
    return sum;   
   }   
   //increment nilai jam atau menit  
   //menghindari angka lebih dari limitnya  
   public void increment()   
   {   
    sum=(sum+1)%limit;   
   }   
   //mengembalikan nilai yang di tampilkan (jika angka kurang dari 10 maka akan ditambahkan 0 di depannya).   
   //(ex. 7 -> 07)   
   public String getDisplayValue()   
   {   
    if(sum<10)   
    {   
     return "0" + sum;   
    }   
    else   
    {   
     return "" + sum;   
    }   
   }   
   //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))   
    {   
     sum=replacementValue;   
    }   
   }   
  }   

ClockDisplay

 /*   
  * @author Indira Nursyamsina Hazimi  
  */   
  public class ClockDisplay   
  {   
   private NumberDisplay jam;   
   private NumberDisplay menit;   
   private String displayString; //mensimulasikan layar sebenarnya.   
   //membuat objek ClockDisplay.   
   //membuat clock baru dengan nilai awal 00:00 dengan limit 24 jam dan 60 menit   
   public ClockDisplay()   
   {   
    jam=new NumberDisplay(24);   
    menit=new NumberDisplay(60);   
    updateDisplay();   
   }  
   //method yang dipanggil setiap menit untuk memperbaharui tampilan  
   public void timeTick()   
   {   
    menit.increment();   
    if(menit.getValue()==0)   
    {   
     jam.increment();   
    }   
    updateDisplay();   
   }   
   //mengatur tampilan clock dengan spesifik pada jam dan menitnya  
   public void setTime(int hour, int minute)   
   {   
    jam.setValue(hour);   
    menit.setValue(minute);   
    updateDisplay();   
   }   
   //mengambil nilai yang sekarang ditampilkan dengan format HH:MM  
   public String getTime()   
   {   
    return displayString;   
   }   
   //memperbaharui string yang merepresentasikan tampilan.   
   private void updateDisplay()   
   {   
    displayString=jam.getDisplayValue() + ":" + menit.getDisplayValue();   
   }   
  }   

TestClockDisplay

 /*  
  * @author Indira Nursyamsina Hazimi  
  */  
 public class TestClockDisplay   
  {   
   public void test()   
   {   
    ClockDisplay clock=new ClockDisplay();   
    clock.setTime(7,11);   
    System.out.println(clock.getTime());   
    clock.setTime(21,16);   
    System.out.println(clock.getTime());  
    clock.setTime(4,29);   
    System.out.println(clock.getTime());  
    clock.setTime(12,1);   
    System.out.println(clock.getTime());  
    clock.setTime(17,39);   
    System.out.println(clock.getTime());  
   }   
  }   

ClockGUI

 /*  
  * @author Indira Nursyamsina Hazimi  
  */   
  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;   
   //membuat frame dan clock baru   
   public void Clock()   
   {   
    makeFrame();   
    clock = new ClockDisplay();   
   }   
   //memulai jam.   
   private void start()   
   {   
    clockOn = true;   
    timerThread = new TimerThread();   
    timerThread.start();   
   }   
   //memberhentikan jam.   
   private void stop()   
   {   
    clockOn = false;   
   }   
   //menjalankan jam secara manual (naik per menit)   
   private void step()   
   {   
    clock.timeTick();   
    label.setText(clock.getTime());   
   }   
   //menampilkan dialog About dari program ini   
   private void showAbout()   
   {   
    JOptionPane.showMessageDialog (frame, "Clock Version 0.1\n" +    
    "Membuat jam digital simpel dengan Java.",   
    "About Clock",   
    JOptionPane.INFORMATION_MESSAGE);   
   }   
   //keluar dari program.   
   private void quit()   
   {   
    System.exit(0);   
   }   
   //membuat frame dan content di dalamnya  
   private void makeFrame()   
   {   
    frame = new JFrame("Clock");   
    JPanel contentPane = (JPanel)frame.getContentPane();   
    contentPane.setBorder(new EmptyBorder(1,60,1,60));   
    makeMenuBar(frame);   
    //mengatur tampilan dengan jarak  
    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);   
    //membuat toolbar dengan tombol  
    JPanel toolbar = new JPanel();   
    toolbar.setLayout(new GridLayout(1,0));   
    //membuat tombol Start untuk memulai clock  
    JButton startButton = new JButton("Start");   
    startButton.addActionListener(e->start());   
    toolbar.add(startButton);   
    //membuat tombol Stop untuk menghentikan clock   
    JButton stopButton = new JButton("Stop");   
    stopButton.addActionListener(e->stop());   
    toolbar.add(stopButton);   
    //membuat tombol Step untuk menambah 1 menit pada clock   
    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();   
    //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);   
   }   
   //membuat Menu Bar di frame   
   private void makeMenuBar(JFrame frame)   
   {   
    final int SHORTCUT_MASK =    
    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();   
    //membuat dropdown menu  
    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   
   {   
    public void run()   
     {   
      //selama jam jalan, maka akan dilakukan Step (menambah nilai setiap menitnya)  
      //pause agar dapat melihat jam nya   
      while(clockOn)   
      {   
       step();   
       pause();   
      }   
     }   
     private void pause()   
     {   
      try    
      {   
       Thread.sleep(900);  
      }   
      catch(InterruptedException exc)   
      {   
      }   
    }   
   }   
  }   

Komentar

Postingan populer dari blog ini

Halaman Berita? HTML & CSS!

Menggunakan CodeIgniter!!

Sistem Informasi Cinema 21 - APSI