2011-02-01 48 views
4

我有一個菜單欄類(MenuBarGUI),我把它放在所有其他類中,我需要知道是否可以通過菜單中的選項關閉當前包含的JFrame。通常我可以調用setVisible(false)然後dispose(),但因爲菜單欄沒有對當前幀的引用,所以我不能這樣做。有沒有辦法做到這一點?有什麼辦法可以獲得對Java中當前框架的引用嗎?

回答

4

如果您MenuBarGUI類JMenuBar的擴展,你可以使用getTopLevelAncestor方法獲取菜單欄的窗口。

1

getParent()將獲得父容器。用這種方法,你將不得不做一些鑄造。更理想的選擇是使菜單欄可以採用包含close方法的界面。

下面是一個例子:

JFrame frame = new JFrame(); 
    JMenuBar bar = new JMenuBar(); 
    frame.setJMenuBar(bar); 
    if(bar.getParent().getParent().getParent() instanceof JFrame){ 
     System.out.println(bar.getParent().getParent().getParent()); 
    } 
+0

我究竟怎樣才能實現的getParent()方法?我不確定把一個容器放到一個窗口有多安全(這看起來很不安全)。另外,我怎麼能實現另一種方法? – LOD121 2011-02-01 23:00:32

+0

我增加了一個例子,但是如果你要走這條路線,Gursel建議getTopLevelAncestor會更合適。 – jzd 2011-02-01 23:19:42

0

上述方法都不適用於我。

因爲我只需要一個小組的直接母公司,直接訪問他們通過超級呼叫:super.setTitle(「新幀標題」)等

相關問題