84 lines
2.5 KiB
Java
84 lines
2.5 KiB
Java
|
Stop watch programme
|
||
|
|
||
|
import java.awt.event.*;
|
||
|
import java.awt.*;
|
||
|
import javax.swing.*;
|
||
|
|
||
|
public class Stopwatch extends JFrame implements ActionListener, Runnable
|
||
|
{
|
||
|
private long startTime;
|
||
|
private final static java.text.SimpleDateFormat timerFormat = new java.text.SimpleDateFormat("mm : ss.SSS");
|
||
|
private final JButton startStopButton= new JButton("Start/stop");
|
||
|
private Thread updater;
|
||
|
private boolean isRunning= false;
|
||
|
private final Runnable displayUpdater= new Runnable()
|
||
|
{
|
||
|
public void run()
|
||
|
{
|
||
|
displayElapsedTime(System.currentTimeMillis() - Stopwatch.this.startTime);
|
||
|
}
|
||
|
};
|
||
|
public void actionPerformed(ActionEvent ae)
|
||
|
{
|
||
|
if(isRunning)
|
||
|
{
|
||
|
long elapsed= System.currentTimeMillis() - startTime;
|
||
|
isRunning= false;
|
||
|
try
|
||
|
{
|
||
|
updater.join();
|
||
|
// Wait for updater to finish
|
||
|
}
|
||
|
catch(InterruptedException ie) {}
|
||
|
displayElapsedTime(elapsed);
|
||
|
// Display the end-result
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
startTime= System.currentTimeMillis();
|
||
|
isRunning= true;
|
||
|
updater= new Thread(this);
|
||
|
updater.start();
|
||
|
}
|
||
|
}
|
||
|
private void displayElapsedTime(long elapsedTime)
|
||
|
{
|
||
|
startStopButton.setText(timerFormat.format(new java.util.Date(elapsedTime)));
|
||
|
}
|
||
|
public void run()
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
while(isRunning)
|
||
|
{
|
||
|
SwingUtilities.invokeAndWait(displayUpdater);
|
||
|
Thread.sleep(50);
|
||
|
}
|
||
|
}
|
||
|
catch(java.lang.reflect.InvocationTargetException ite)
|
||
|
{
|
||
|
ite.printStackTrace(System.err);
|
||
|
// Should never happen!
|
||
|
}
|
||
|
catch(InterruptedException ie) {}
|
||
|
// Ignore and return!
|
||
|
}
|
||
|
public Stopwatch()
|
||
|
{
|
||
|
startStopButton.addActionListener(this);
|
||
|
getContentPane().add(startStopButton);
|
||
|
setSize(100,50);
|
||
|
setVisible(true);
|
||
|
}
|
||
|
public static void main(String[] arg)
|
||
|
{
|
||
|
new Stopwatch().addWindowListener(new WindowAdapter()
|
||
|
{
|
||
|
public void windowClosing(WindowEvent e)
|
||
|
{
|
||
|
System.exit(0);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|