parent
c7b7f524a4
commit
07e5dc9165
@ -1,128 +0,0 @@
|
|||||||
import javax.swing.*;
|
|
||||||
import java.awt.HeadlessException;
|
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.FlowLayout;
|
|
||||||
import java.awt.Font;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
|
|
||||||
public class time extends JFrame {
|
|
||||||
private static final String INITIAL_LABEL_TEXT = "00:00:00";
|
|
||||||
|
|
||||||
// 计数线程
|
|
||||||
private CountingThread thread = new CountingThread();
|
|
||||||
|
|
||||||
// 记录程序开始时间
|
|
||||||
private long programStart = System.currentTimeMillis();
|
|
||||||
|
|
||||||
// 程序一开始就是暂停的
|
|
||||||
private long pauseStart = programStart;
|
|
||||||
|
|
||||||
// 程序暂停的总时间
|
|
||||||
private long pauseCount = 0;
|
|
||||||
|
|
||||||
private JLabel label = new JLabel(INITIAL_LABEL_TEXT);
|
|
||||||
|
|
||||||
private JButton startPauseButton = new JButton("暂停");
|
|
||||||
|
|
||||||
private JButton resetButton = new JButton("清零");
|
|
||||||
|
|
||||||
private ActionListener startPauseButtonListener = new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
if (thread.stopped) {
|
|
||||||
pauseCount += (System.currentTimeMillis() - pauseStart);
|
|
||||||
thread.stopped = false;
|
|
||||||
startPauseButton.setText("暂停");
|
|
||||||
} else {
|
|
||||||
pauseStart = System.currentTimeMillis();
|
|
||||||
thread.stopped = true;
|
|
||||||
startPauseButton.setText("继续");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private ActionListener resetButtonListener = new ActionListener() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
pauseStart = programStart;
|
|
||||||
pauseCount = 0;
|
|
||||||
thread.stopped = true;
|
|
||||||
label.setText(INITIAL_LABEL_TEXT);
|
|
||||||
startPauseButton.setText("暂停");
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public time(String title) throws HeadlessException {
|
|
||||||
super(title);
|
|
||||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
||||||
setLocation(300, 300);
|
|
||||||
setResizable(true);
|
|
||||||
setupLabel();
|
|
||||||
if (thread.stopped == false) {
|
|
||||||
setupButtonsPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
startPauseButton.addActionListener(startPauseButtonListener);
|
|
||||||
resetButton.addActionListener(resetButtonListener);
|
|
||||||
|
|
||||||
thread.start(); // 计数线程一直就运行着
|
|
||||||
}
|
|
||||||
//配置按钮
|
|
||||||
private void setupButtonsPanel() {
|
|
||||||
JPanel panel = new JPanel(new FlowLayout());
|
|
||||||
panel.add(startPauseButton);
|
|
||||||
panel.add(resetButton);
|
|
||||||
add(panel, BorderLayout.SOUTH);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 配置标签
|
|
||||||
private void setupLabel() {
|
|
||||||
label.setHorizontalAlignment(SwingConstants.CENTER);
|
|
||||||
label.setFont(new Font(label.getFont().getName(), label.getFont().getStyle(), 20));
|
|
||||||
this.add(label, BorderLayout.CENTER);
|
|
||||||
}
|
|
||||||
|
|
||||||
private class CountingThread extends Thread {
|
|
||||||
|
|
||||||
public boolean stopped = false;
|
|
||||||
|
|
||||||
private CountingThread() {
|
|
||||||
setDaemon(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
while (true) {
|
|
||||||
if (!stopped) {
|
|
||||||
long elapsed = System.currentTimeMillis() - programStart - pauseCount;
|
|
||||||
label.setText(format(elapsed));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
sleep(1); // 1毫秒更新一次显示
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
System.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 将毫秒数格式化
|
|
||||||
private String format(long elapsed) {
|
|
||||||
int hour, minute, second;
|
|
||||||
elapsed = elapsed / 1000;
|
|
||||||
|
|
||||||
second = (int) (elapsed % 60);
|
|
||||||
elapsed = elapsed / 60;
|
|
||||||
|
|
||||||
minute = (int) (elapsed % 60);
|
|
||||||
elapsed = elapsed / 60;
|
|
||||||
|
|
||||||
hour = (int) (elapsed % 60);
|
|
||||||
|
|
||||||
return String.format("%02d:%02d:%02d", hour, minute, second);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in new issue