1

次のシナリオがあります(2クラス)

フレーム 1 (次のボタン)
フレーム 2 (前のボタン、閉じるボタン)
フレーム 1 を開いた (インスタンス 1)
に進む フレーム 1 - フレーム 2 (frame1.setVisible(false)およびframe2.setVisible(true)) (インスタンス 2)
に進む フレーム 2 - フレーム 1 (frame2.setVisible(false)およびframe1.setVisible(true)) (インスタンス 3)
再び フレーム 1 - フレーム 2 (frame1.setVisible(false)およびframe2.setVisible(true)) (インスタンス 4)

上記のプロセスで 4 つのインスタンス (プログラムを開いた場合はインスタンスとして記録)がフレーム 2
からのクローズ中に使用さframe1.dispose()れ、frame2.dispose()
ここでは 2 回だけインスタンスが破棄されます。
しかし問題は、まだ 2 つのインスタンスが破棄されていないことです。
ただし、生きているプロセスは 1 つだけです。それはどのように可能ですか?
上記のシナリオでは、すべてのインスタンスを破棄してプロセスを強制終了する必要がありますか?

4

2 に答える 2

1
于 2013-02-07T11:34:21.113 に答える
1

一緒に行きたくない場合は、このようにすることを検討してくださいCardLayout

Frame1以下に示すように引数 of でコンストラクタを作成し、Frame2frame2 オブジェクトをローカルに格納します。

public class Frame1{
    private Frame2 frame2Obj;
    public Frame1(Frame2 frame1Obj){
        this.frame2Obj = frame2Obj;
    }
    private openFrame1(){
         frame2Obj.setVisible(true);
         this.setVisible(false);
    }
}

同様に、以下に示すようFrame2に引数 of でコンストラクターを作成し、frame1 オブジェクトをローカルに格納します。Frame1

public class Frame2{
    private Frame1 frame1Obj;
    public Frame2(Frame1 frame1Obj){
        this.frame1Obj = frame1Obj;
    }
    private openFrame1(){
         frame1Obj.setVisible(true);
         this.setVisible(false);
    }
}

これで、インスタンスが 2 つだけになります。

于 2013-02-07T11:33:17.603 に答える