4

したがって、私のコードは次のようになります。

Class2 className = new Class2(param1, param2);
className = null;
if (Class2 == null) {
    refreshState();
}

オブジェクトが破棄されrefreshStateたらメソッドを実行したい。classNameしたがって、基本的にClass2は、既存のフレームの上に別のフレームを実行するクラスです。新しいフレームが閉じられたときにのみメソッドを実行したい。これどうやってするの?

4

2 に答える 2

3

したがって、基本的に Class2 は、既存のフレームの上で別のフレームを実行するクラスです。新しいフレームが閉じられたときにのみメソッドを実行したい。これどうやってするの?

より良い解決策は、JOptionPane やモーダル JDialog などのモーダル ダイアログを使用することです。これにより、ダイアログ ウィンドウが処理されて表示されなくなるまで、メイン ウィンドウでの Swing コードの処理が停止します。次に、ダイアログが閉じられた直後に refreshState を実行できます。

擬似コード:

main window code
show modal dialog
refresh state here. This will be called only after the dialog has returned.
于 2013-03-23T02:50:48.503 に答える
1

フレームに java.awt.event.WindowListener を追加します。

class2.getFrame().addWindowsListener(new WindowAdapter() {
    public void windowClosed(WindowEvent we) {
        // The frame is closed, let's dot something else
        refreshState();
    }
}
于 2013-03-23T09:29:50.447 に答える