java中的计时器退出条件

时间:2013-03-16 12:01:29

标签: java multithreading swing

                 String move=jTextField1.getText();             
                 i=Integer.parseInt(move);
                 timer = new Timer(1000,new ActionListener(){
                    public void actionPerformed(ActionEvent e)
                    {
                        i--;
                        if(i<=0)
                        {
                                if(move.equals("0"))
                                {
                                    Thread th=new Thread(new DetectImage());
                                    th.start();
                                   SwingUtilities.invokeLater(new Runnable(){
                            @Override
                            public void run() {
                                new TrafficMainGUI(storeValue);
                            }
                                   });

                                }

        timer.stop();
                        }
                        }
                        jTextField1.setText(""+i);
                    }
                 });
                    timer.start();

           move=""+i;



//Thread th in DetectImage class
 public void run()
    {
        while(stay<20)
        {
            try {
                stay++;
    //few contions
                Thread.sleep(1000);
            }
       }
  }   

// EveryThing可以正常使用线程,但是当我使用SwingUtiities.invokeLater()时 调用这个代码所在的同一个类来获得无限条件。 这不会将它重定向到TrafficMainGUI类。还有一些其他方法可以实现这种模型。

1 个答案:

答案 0 :(得分:3)

  1. jTextField1.setText(""+i);必须通过invokeLater

  2. 调用此作业的util.Timer
  3. 使用Swing Timer代替

  4. if(move.equals("0")) {是关于动画,然后独占使用Swing Timer