Minggu, 30 September 2018

TUGAS PBO B (Tugas Rumah 4)

Membuat Jam



1. Source Code Clock
 import java.awt.*;  
 import java.awt.event.*;  
 import javax.swing.*;  
 import javax.swing.border.*;  
 /**  
  * A very simple GUI (graphical user interface) for the clock  
  * display.  
  * In this implementation, time runs at about 3 minutes per second,  
  * so that testing the display is a little quicker  
  *  
  * @author (Christine Amelia)  
  * @version (6-01/10/2018)  
  */  
 public class Clock  
 {  
   private JFrame frame;  
   private JLabel label;  
   private ClockDisplay clock;  
   private boolean clockRunning = false;  
   private TimerThread timerThread;  
   /**  
    * Constructor for objects of class Clock  
    */  
   public Clock()  
   {  
     makeFrame();  
     clock = new ClockDisplay();  
   }  
   public void start()  
   {  
     clockRunning = true;  
     timerThread = new TimerThread();  
     timerThread.start();  
   }  
   private void stop()  
   {  
     clockRunning = false;  
   }  
   private void step()  
   {  
     clock.timeTick();  
     label.setText(clock.getTime());  
   }  
   /**  
    * 'About' function:show the 'about' box.  
    */  
   private void showAbout()  
   {  
     JOptionPane.showMessageDialog(frame,   
       "Clock Version 1.0\n"+  
       "A simple interface for the 'Objects First' clock display project",  
       "About Clock",  
       JOptionPane.INFORMATION_MESSAGE);  
   }  
   /**  
    * Quit function: quit the application.  
    */  
   private void quit()  
   {  
     System.exit(0);  
   }  
   /**  
    * Create the Swing frame and its content.  
    */  
   private void makeFrame()  
   {  
     frame = new JFrame("Clock");  
     JPanel contentPane = (JPanel)frame.getContentPane();  
     contentPane.setBorder(new EmptyBorder(1, 60, 1, 60));  
     makeMenuBar(frame);  
     //Specify the layout manager with nice spacing  
     contentPane.setLayout(new BorderLayout(12,12));  
     //Create the image pane in the center  
     label = new JLabel("00:00", SwingConstants.CENTER);  
     Font displayFont = label.getFont().deriveFont(96.0f);  
     label.setFont(displayFont);  
     //imagePanel.setBorder(new EtchedBorder());  
     contentPane.add(label,BorderLayout.CENTER);  
     //Create the toolbar with the buttons  
     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);  
     //Add toolbar into panel with flow layout for spacing  
     JPanel flow = new JPanel();  
     flow.add(toolbar);  
     contentPane.add(flow, BorderLayout.SOUTH);  
     //building is done - arrange the components  
     frame.pack();  
     //place the frame at the center of the screen and show  
     Dimension d=Toolkit.getDefaultToolkit().getScreenSize();  
     frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);  
     frame.setVisible(true);  
   }  
   /**  
    * Create the main frame's menu bar  
    *   
    * @paramframe The frame that the menu bar should be added to.  
    */  
   private void makeMenuBar(JFrame frame)  
   {  
     final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();  
     JMenuBar menubar = new JMenuBar();  
     frame.setJMenuBar(menubar);  
     JMenu menu;  
     JMenuItem item;  
     //create the File menu  
     menu = new JMenu("File");  
     menubar.add(menu);  
     item = new JMenuItem("Anout 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)  
       {  
         step();  
         pause();  
       }  
     }  
     private void pause()  
     {  
       try  
       {  
         Thread.sleep(300); //pause for 300 milliseconds  
       }  
       catch(InterruptedException exc)  
       {  
       }  
     }  
   }  
 }  


2.Source Code ClockDisplay
 /**  
  * The ClockDisplay class implements a digital clock display for  
  * s European-style 24 hour clock, The clock show hours and  
  * minutes. The range of the dock is 00:00 (midnight) to 23:59  
  * (one minute before midnight).  
  *   
  * The clock display recives "ticks" (via the timeTick method)  
  * every minute and reacts by incrementing the display. This is  
  * done in the usual clock fashion: the hour increments when the  
  * minutes roll over to zero.  
  *  
  * @author (Christine Amelia)  
  * @version (6-01/10/2018)  
  */  
 public class ClockDisplay  
 {  
   private NumberDisplay hours;  
   private NumberDisplay minutes;  
   private String displayString; //simulates the actual display  
   /**  
    * Constructor for ClockDisplay objects. This constructor  
    * creates a new clock set at 00:00  
    */  
   public ClockDisplay()  
   {  
     hours = new NumberDisplay(24);  
     minutes = new NumberDisplay(60);  
     updateDisplay();  
   }  
   /**  
    * Constructur for ClockDisplay objects. This constructor  
    * creates a new clock set at the time specified by the   
    * parameters.  
    */  
   public ClockDisplay(int hour, int minute)  
   {  
     hours = new NumberDisplay(24);  
     minutes = new NumberDisplay(60);  
     setTimer(hour, minute);  
   }  
   /**  
    * This method should get called once every minute - it makes  
    * the clock display go one minute forward.  
    */  
   public void timeTick()  
   {  
     minutes.increment();  
     if(minutes.getValue() == 0) //it just rolled over  
     {  
       hours.increment();  
     }  
     updateDisplay();  
   }  
   /**  
    * Set the time of the display to the specified hour and   
    * minute.  
    */  
   public void setTimer(int hour, int minute)  
   {  
     hours.setValue(hour);  
     minutes.setValue(minute);  
     updateDisplay();  
   }  
   /**  
    * Return the current time if this display in the format  
    * HH:MM.  
    */  
   public String getTime()  
   {  
     return displayString;  
   }  
   /**  
    * Update teh internal string that represents the display.  
    */  
   private void updateDisplay()  
   {  
     displayString = hours.getDisplayValue()+ ":" +minutes.getDisplayValue();  
   }  
 }  


3.Source Code NumberDisplay
 /**  
  * The NumberDisplay class represents a digital number display  
  * that can hold values from zero to a given limit. The limit can  
  * be specified when creating the display. The values range from  
  * zero (inclusive) to limit-1. If used, for example, for the  
  * seconds on a digital clock, the limit would be 60, resulting  
  * in display values from 0 to 59. When incremented, the display  
  * automatically rolls over to zero when reaching the limit.  
  *  
  * @author (Christine Amelia)  
  * @version (6-01/10/2018)  
  */  
 public class NumberDisplay  
 {  
   private int limit;  
   private int value;  
   /**  
    * Constructor for objects of class NumberDisplay  
    * Set the limit at which the display rolls over.  
    */  
   public NumberDisplay(int rollOverLimit)  
   {  
     limit = rollOverLimit;  
     value = 0;  
   }  
   /**  
    * Return the current value.  
    */  
   public int getValue()  
   {  
     return value;  
   }  
   /**  
    * Return the display value(that is, the current value as a   
    * two-digit String. If the value is less than ten, it will  
    * be padded with a leading zero).  
    */  
   public String getDisplayValue()  
   {  
     if(value<10)  
     {  
       return "0"+value;  
     }  
     else  
     {  
       return""+value;  
     }  
   }  
   /**  
    * Set the value of the display to the specified value. If the  
    * new value is less than zero or over the limit, do nothing.  
    */  
   public void setValue(int replacementValue)  
   {  
     if((replacementValue>=0) && (replacementValue<limit))  
     {  
       value = replacementValue;  
     }  
   }  
   /**  
    * Increment the display value by one, rolling over to zero  
    * if the limit is reached.  
    */  
   public void increment()  
   {  
     value = (value+1)%limit;  
   }  
 }  









Tidak ada komentar:

Posting Komentar

MPPL 2020 - Manajemen Biaya

Christine Amelia / 05111740000174 Nandha Himawan / 05111740000180 Berikut merupakan manajemen biaya yang telah kami buat berdasarkan KAK ...