3
                 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 にリダイレクトしません。この種のモデルを実現する他の方法はありますか。

4

1 に答える 1

3
  1. jTextField1.setText(""+i); invokeLaterから呼び出されることにより、このジョブのためにラップする必要がありますutil.Timer

  2. 代わりにスイングタイマーを使用してください

  3. if(move.equals("0")) {アニメーションについてです、そしてSwing Timer排他的に使用する

于 2013-03-16T12:30:32.083 に答える