Berikut class dan source code yang digunakan dalam membuat Jam Sederhana
Berikut hasilnya setelah dijalankan
Kemudian setelah membuat jam yang sederhana, saya membuat jam yang memiliki sebuah tampilan grafis. Maka dari itu saya membuat class baru yaitu class ClockGUI
- Class NumberDisplay
/**
* Write a description of class NumberDisplay here.
*
* @author Bima S. Ramadhan
* @version 1.0
*/
public class NumberDisplay
{
private int limit;
private int value;
public NumberDisplay(int rollOverLimit)
{
limit = rollOverLimit;
value = 0;
}
public int getValue()
{
return value;
}
public void setValue(int replacementValue)
{
if((replacementValue >= 0) && (replacementValue < limit)) {
value = replacementValue;
}
}
public String getDisplayValue()
{
if(value < 10) {
return "0" +value ;
}
else {
return "" +value ;
}
}
public void increment()
{
value = (value + 1) % limit;
}
}
- Class ClockDisplay
/**
* Write a description of class ClockDisplay here.
*
* @author Bima S. Ramadhan
* @version 1.0
*/
public class ClockDisplay
{
private NumberDisplay hours;
private NumberDisplay minutes;
private String displayString; //simulates the actual display
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 timeTick()
{
minutes.increment();
if(minutes.getValue() == 0) { //it just rolled over
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();
}
}
- Class TestClockDisplay
/**
* Write a description of class TestClockDisplay here.
*
* @author Bima S. Ramadhan
* @version 1.0
*/
public class TestClockDisplay
{
public void test()
{
ClockDisplay clock = new ClockDisplay();
clock.setTime(0,0);
System.out.println(clock.getTime());
clock.setTime(5,30);
System.out.println(clock.getTime());
clock.setTime(20,00);
System.out.println(clock.getTime());
clock.setTime(23,59);
System.out.println(clock.getTime());
}
}
Berikut hasilnya setelah dijalankan
Kemudian setelah membuat jam yang sederhana, saya membuat jam yang memiliki sebuah tampilan grafis. Maka dari itu saya membuat class baru yaitu class ClockGUI
- Class ClockGUI
/**
* Write a description of class ClockGUI here
*
* @author Bima S. Ramadhan
* @version 1.0
*/
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class ClockGUI
{
private JFrame frame;
private JLabel label;
private ClockDisplay clock;
private boolean clockOn = false;
private TimerThread timerThread;
public void Clock()
{
makeFrame();
clock = new ClockDisplay();
}
private void start()
{
clockOn = true;
timerThread = new TimerThread();
timerThread.start();
}
private void stop()
{
clockOn = false;
}
private void step()
{
clock.timeTick();
label.setText(clock.getTime());
}
private void showTentang()
{
JOptionPane.showMessageDialog (frame, "Jam Digital\n" +
"Jam digital dengan Bahasa Java.",
"Tentang",
JOptionPane.INFORMATION_MESSAGE);
}
private void quit()
{
System.exit(0);
}
private void makeFrame()
{
frame = new JFrame("Jam");
JPanel contentPane = (JPanel)frame.getContentPane();
contentPane.setBorder(new EmptyBorder(1,60,1,60));
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 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();
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("Tentang Jam...");
item.addActionListener(e->showTentang());
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(clockOn)
{
step();
tunda();
}
}
private void tunda()
{
try
{
Thread.sleep(900);
}
catch(InterruptedException exc)
{
}
}
}
}
Tampilan awal setelah program dijalankan adalah seperti di bawah. Kemudian saya klik Start maka waktu akan berjalan
Setelah waktu berjalan kemudian saya tekan Stop dan berhenti
Tampilan di BlueJ