1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class DemoTimer {
private static final long DELAY = 500;
private final JButton startButton;
private final JButton stopButton;
private final JLabel label;
private final Timer timer;
private TimerTask timerTask;
public DemoTimer() {
JFrame frame = new JFrame("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
timer = new Timer();
label = new JLabel("Time Passed: 0:00:00", JLabel.CENTER);
frame.add(label);
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
startButton = new JButton("Start");
startButton.addActionListener(e -> start());
stopButton = new JButton("Stop");
stopButton.addActionListener(e -> stop());
stopButton.setEnabled(false);
buttonPanel.add(startButton);
buttonPanel.add(stopButton);
frame.add(buttonPanel, BorderLayout.SOUTH);
frame.setSize(400,300);;
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private void start() {
timerTask = new TimerTask() {
final long start = System.currentTimeMillis();
@Override
public void run() {
final long time = System.currentTimeMillis() - start;
final int seconds = (int) (time / 1000);
final String message = String.format("Time Passed: %d:%02d:%02d", seconds / 3600, (seconds % 3600) / 60, (seconds % 60));
SwingUtilities.invokeLater(new Runnable() {
public void run() {
label.setText(message);
}
});
}
};
timer.schedule(timerTask, 0, DELAY);
startButton.setEnabled(false);
stopButton.setEnabled(true);
}
private void stop() {
timerTask.cancel();
stopButton.setEnabled(false);
startButton.setEnabled(true);
}
public static void main(String[] args) {
new DemoTimer();
}
} |