2013-02-07 28 views
1

我有以下情形(2班)框架調用setVisible(假)和Dispose()方法不能殺死進程

幀1(Next按鈕)
式2(上一個按鈕,關閉按鈕)
幀1打開(例如1)
去Frame1中 - 式2(frame1.setVisible(false)frame2.setVisible(true))(實例2)
去式2 - Frame1中(frame2.setVisible(false)frame1.setVisible(true))(實例3)
再次Frame1中 - 式2(frame1.setVisible(false)frame2.setVisible(true))(實例4)

在上述過程中

4個實例期間關閉(如果程序然後打開記爲實例)
現在從式2,我米使用frame1.dispose()frame2.dispose()
這裏只有2次實例佈置。
但問題是:仍然沒有配置2個實例。
但只有一個過程是活着的。這怎麼可能?
在上述情況下,我應該處置所有實例來殺死進程嗎?

+0

你是什麼意思的「實例」?你怎麼知道「仍然沒有2個實例」?如果可能的話改善這個問題,因爲它仍然很難遵循。 –

+0

如果程序打開,然後記錄爲實例。 neway我編輯了謝謝你! –

+0

嗯。剛剛嘗試,它真的沒有工作!有趣。調查這件事會很有趣,但如果你正在執行這個實現,那麼你可能會面臨更多的麻煩。採取一些建議,例如使用'CardLayout'或'JDialog'代替'JFrame'。嚴重的是,避免多個JFrames。 –

回答

1

您考慮做這樣的,如果你不想去CardLayout

Frame1Frame2參數創建一個構造函數如下圖所示,店鋪式2在本地對象。

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

Frame2類似地創建一個構造與Frame1參數如下所示並存儲在本地FRAME1對象。

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

現在你將只有兩個實例。

+0

不是我的那個問題... System.exit(0)終止整個系統 –