日期:2014-05-20 浏览次数:20771 次
public class StopWatch extends JFrame {
JTextArea timeArea; // 时间显示
JButton startBtn, pauseBtn, resetBtn;
private int mins = 0, sec = 0;
private long currentTime; // 记录系统当前时间。
private long difference; // 秒表记录并要显示的时间。
private long timeOfStart; // 记录按下"开始"时的系统时间。
private long timeLengthOfPause; // 按下"暂停"时记录累计计时时间。
private String timeStr, str1, str2;
public StopWatch(String str) {
super(str);
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
timeArea = new JTextArea("", 1, 12);
timeArea.setText("00:00");
new Thread(new Runnable() {
public void run() {
while(true){
currentTime=System.currentTimeMillis(); //当前时间
difference=timeLengthOfPause+(currentTime-timeOfStart); //计时时间。
difference=difference/10; //以10ms为单位。
mins=(int)(difference/(60*100)); //分钟数
sec=(int)((difference/100)%60); //秒数
str1=(mins<10)?("0"+mins+":"):(mins+":");
str2=(sec<10)?("0"+sec):(sec+"");
timeStr=str1+str2;
timeArea.setText(timeStr);
}
}
}).start();
contentPane.add(timeArea, BorderLayout.NORTH);
// 中间:启动和暂停按钮
JPanel pCenter = new JPanel(new GridLayout(1, 2));
startBtn = new JButton("开始");
pCenter.add(startBtn);
pack();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口退出程序。
}
public static void main(String args[]) {
new StopWatch("秒表");
}
}