-1
public void executeRepeat(String s) {
    this.move = s;
    storeValue = move;
    i = Integer.parseInt(move);
    timer = new Timer(1000, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            i--;
            if(i <= 0) {
                move = "" + i;
                if (move.trim().equals("0")) {
                    Thread th = new Thread(new DetectImage());
                    th.start();
                }
                timer.stop();
            }
            jTextField1.setText("" + i);
        }
    });
    timer.start();          
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    move = jTextField1.getText();      
    executeRepeat(move);
}

public static int stay = 0;

class DetectImage implements Runnable {
    @Override
    public void run() {
        while (stay < 3) {
            try {
                stay++;
                // few steps for comparison  
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(TrafficMainGUI.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (stay >= 3) {
            stay = 0;
            String store = storeValue;
            TrafficMainGUI traffic = new TrafficMainGUI(store);
            traffic.setVisible(true);
        }
    }
}

TrafficMainGUIこのスレッドからクラスを呼び出しています。全体のプロセスは順調に進んでいます。しかし、複数のフレームが開かれています。前のフレームを処分したい。スレッドクラスで破棄するためのメインメソッドにアクセスできないため、ここでこれをどのように達成する必要がありますか。

4

1 に答える 1

0
Frame[] frames = Frame.getFrames();  

それはあなたにアプリケーションの合計フレームを与えます

于 2013-03-18T10:19:12.123 に答える