为了账号安全,请及时绑定邮箱和手机立即绑定

计时器问题

计时器问题

橙子lovesun 2015-12-24 15:28:55
用Java编写的计时器,有三按钮。开始,停止,复位。问题出在:按下复位后再按开始,还是从按下停止的时间开始计时。请问下应该怎么改写代码,使得按下开始就是从0计时。代码如下: import java.awt.Button; import java.awt.Color; import java.awt.FlowLayout; import java.awt.PopupMenu; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.Timer; public class TimeCount extends JFrame { JLabel lbl = new JLabel(); Date now = new Date(); public TimeCount() { now.setHours(0); now.setMinutes(0); now.setSeconds(0); final Timer timer = new Timer(1000, new ActionListener() { public void actionPerformed(ActionEvent e) { Date now2 = new Date(now.getTime() + 1000); now = now2; SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); lbl.setText(formatter.format(now)); } }); Button b1 = new Button("开始计时"); Button b2 = new Button("停止计时"); Button b3 = new Button("复位"); b1.setSize(100, 50); b2.setSize(100, 50); b3.setSize(100, 50); b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Button b = (Button) e.getSource(); b.setLabel("开始计时"); timer.start(); } }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Button b = (Button) e.getSource(); b.setLabel("停止计时"); timer.stop(); } }); b3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { lbl.setText("00:00:00"); } }); this.setLayout(new FlowLayout()); //this.add(txt); this.add(b1); this.add(b2); this.add(b3); this.add(lbl); this.setSize(300, 200); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { TimeCount t = new TimeCount(); } }
查看完整描述

3 回答

已采纳
?
管理員

TA贡献11条经验 获得超2个赞

try {
	now = formatter.parse("00:00:00");
} catch (ParseException e1) {
	e1.printStackTrace();
}
lbl.setText("00:00:00");


查看完整回答
反对 回复 2015-12-25
?
努力提升

TA贡献65条经验 获得超15个赞

你应该把时间重置为0时0分0秒,不是光把label的文本内容都改成0啊,你这样对计时器根本没影响啊。

查看完整回答
反对 回复 2015-12-24
?
Mr_atom

TA贡献8条经验 获得超5个赞

开始前要初始化时间,或者在停止的时候初始化。

查看完整回答
反对 回复 2015-12-24
  • 3 回答
  • 0 关注
  • 1309 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信