定时器程序冻结

时间:2013-12-28 02:29:36

标签: java swing timer

我正在研究一个JFrame计时器,每次按下启动程序就冻结了  这是我的代码:

public void startTime() throws InterruptedException{
        Thread thread = new Thread();
        for(int i = 0;i<10000;i++){
            seconds++;
            timeLabel.setText(hours+" : "+ minutes +" : "+seconds);
            switch(seconds){
            case 60:
                seconds = 0;
                minutes++;
                break;
            }
            switch(minutes){
            case 60 : 
                minutes = 0;
                seconds = 0;
                hours++;
                break;
            }
            thread.sleep(700L);
        }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        try {
            startTime();
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }

我试图让它按下按钮时启动计时器 关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:5)

你在Swing事件线程上调用Thread.sleep。

此:

Thread thread = new Thread();

绝对没有。

  • 考虑将Runnable放在那里,然后在Runnable中完成EDT工作。
  • 甚至更好地使用Swing Timer。