2015-12-21 47 views
-4

我有一個關於JFrames並正確處理它們的快速問題。我有一個遊戲有多個級別,我希望在使用新級別創建另一個時使用該框架。在另一個類中處理JFrame

我目前在上工作的程序擴展了一個JFrame,它總是讓我感到困惑,因爲我不知道該JFrame被稱爲什麼。

無論如何,我有另一個類擴展JPanel。在這個類中,我有一個方法,當遊戲狀態完成時,刪除所有實例並關閉JFrame。然而,這是行不通的,因爲我無法得到框架的框架,而是我得到了同一個JFrame的多個實例。

所以我成立這個樣子的:

1類擴展JFrame的 .... .... ....

2類擴展JPanel ... .. 方法(清除所有內容+爲新的級別獲取新的JFrame) ...

對不起,如果這是模糊的,我不想發佈數百行代碼用於簡短問題。我知道其他人問這個問題,但我似乎永遠無法爲我工作。

所以再一次,我的問題是如何關閉另一個類方法中的JFrame。

(請注意:一切完美,我不能沒有它我完全打破封閉框架)

+3

你說得對,那是模糊的。嘗試構建一個http://stackoverflow.com/help/mcve – pvg

+4

您應該避免使用多個JFrames,請參閱[使用多個JFrames,好/壞實踐](http://stackoverflow.com/questions/9554636/multi-jframes-good-bad-practice)而不是使用[CardLayout](https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) – Frakcool

+1

更好的解決方案可能會使用[CardLayout](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)或更多使用[對話框](http://docs.oracle.com/javase /tutorial/uiswing/components/dialog.html) – MadProgrammer

回答

2

dispose()是insance級別的方法。如果您有對象o,它是JFrame或繼承的class,則o.dispose()應該處理它。如果你不知道,如果你簡單地調用從什麼地方dispose()Ø是當你要處理它初始化,然後

if (o != null) { 
    o.dispose(); 
} 

,你會如果該對象/類沒有一個dispose對象得到一個異常。因此,如果您想從類A中銷售o,那麼您應該在其中一種方法中調用o.dispose(),但在此之前請確保您正確初始化了o