Minggu, 30 September 2018

TUGAS PBO B

MEMBUAT SEBUAH JAM DIGITAL

Pada jurnal kali ini, saya diberikan tugas untuk Membuat display sebuah jam digital menggunakan java. Setelah melakukan proses-proses untuk mengidentifikasi hal-hal yang dibutuhkan untuk Membuat jam, maka dapat dibuat program dan muncul display berikut :


Kelas yang digunakan :
Source Code :

TestClockDisplay

  import java.awt.*;   
  import java.awt.event.*;   
  import javax.swing.*;   
  import javax.swing.border.*;   
  import java.util.Scanner;   
  /**   
  * Digital Clock   
  *   
  * @author CarWima  
  * @version 1.0Beta   
  */    
  public class TestClockDisplay  
  {   
   Scanner sc = new Scanner(System.in);   
   private JFrame frame;   
   private JLabel label;   
   private ClockDisplay clock;   
   private boolean clockRunning = false;   
   private TimerThread timerThread;   
   public TestClockDisplay()   
   {   
    makeFrame();   
    clock = new ClockDisplay();   
   }   
   private void start()   
   {   
    clockRunning = true;   
    timerThread = new TimerThread();   
    timerThread.start();   
   }   
   private void stop()   
   {   
    clockRunning = false;   
   }   
   private void stepMinute()   
   {   
    clock.timeTickMinute();   
    label.setText(clock.getTime());   
   }   
   private void stepHour()   
   {   
    clock.timeTickHour();   
    label.setText(clock.getTime());   
   }   
   private void showAbout()   
   {   
    JOptionPane.showMessageDialog (frame,    
     "Digital Clock\n",    
     "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, 50, 1, 50));   
    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 setButtonH = new JButton("STEP-HOUR");   
    setButtonH.addActionListener(e -> stepHour());   
    toolbar.add(setButtonH);   
    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 (clockRunning) {   
      stepMinute();   
      pause();   
     }   
    }   
    private void pause()   
    {   
     try {   
      Thread.sleep(60000);   
     }   
     catch (InterruptedException exc) {   
     }   
    }   
   }   
  }   

ClockDisplay

 public class ClockDisplay   
  {   
   private NumberDisplay hours;   
   private NumberDisplay minutes;   
   private String displayString;   
   /**   
    * new clock set at 00:00.   
   */   
   public ClockDisplay()   
   {   
    hours = new NumberDisplay(24);   
    minutes = new NumberDisplay(60);   
    updateDisplay();   
   }   
   public ClockDisplay(int hour, int minute)   
   {   
    hours = new NumberDisplay(24);   
    minutes = new NumberDisplay(60);   
    setTime(hour, minute);   
   }   
   public void timeTickMinute()   
   {   
    minutes.increment();   
    if(minutes.getValue() == 0) {   
     hours.increment();   
    }   
    updateDisplay();   
   }   
   public void timeTickHour()   
   {   
    hours.increment();   
    updateDisplay();   
   }   
   public void setTime(int hour, int minute)   
   {   
    hours.setValue(hour);   
    minutes.setValue(minute);   
    updateDisplay();   
   }   
   public String getTime()   
   {   
    return displayString;   
   }   
   private void updateDisplay()   
   {   
    displayString = hours.getDisplayValue() + ":" +   
    minutes.getDisplayValue();   
   }   
  }   

NumberDisplay
 public class NumberDisplay   
  {   
   private int limit;   
   private int value;   
   public NumberDisplay(int rollOverLimit)   
   {   
    limit = rollOverLimit;   
    value = 0;   
   }   
   public int getValue()   
   {   
    return value;   
   }   
   public String getDisplayValue()   
   {   
    if(value < 10) {   
     return "0" + value;   
    }   
    else {   
     return "" + value;   
    }   
   }   
   public void setValue(int replacementValue)   
   {   
    if((replacementValue >= 0) && (replacementValue < limit)) {   
     value = replacementValue;   
    }   
   }   
   public void increment()   
   {    
    value = (value + 1) % limit;   
   }   
  }   

Tidak ada komentar:

Posting Komentar