2014-01-30 28 views
-1

可以說我有以下結構。如何獲得最頂部的框架或窗框

enter image description here

其實,紅色是的JDialog。 我的問題是如何獲得紅色jdialog內的黑色主框架,以便我可以改變黑色框架的某些內容。他們不是父子關係。

有沒有什麼方法可以用來先獲取窗口然後得到黑框?

我聽說SwingUtilities.getWindowAncestor可能能夠做我想做的事情。我嘗試過並沒有成功。

+1

你真的應該擁有多個JFrame嗎? http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice – Sinkingpoint

+1

如果你需要改變父母,你需要提供某種對父母的引用,直接或者直接(我會勸阻)或通過某種模型/控制器,您可以請求以您的名義以某種方式應用更改 – MadProgrammer

+0

I second @ MadProgrammer的recs。當然,魔鬼的所有細節,這意味着解決方案的細節將取決於您的代碼和您的問題的細節。當你陳述「父母」時,我只是有點擔心,因爲繼承與這個問題無關。 –

回答

0

你可以用許多不同的方式拍攝。根據您是否需要一次性解決方案或動態解決方案,其策略會發生變化。作爲一次性的解決方案,如果你只是總想找到主框架,你可以使用其他人已經建議的參考或做一個單身主框架,在那裏你可以像訪問它一樣MainFrame.getInstance().doWhateveryouwanted();

然而,它不明確它的目標,你提出來,我扔在了一些有用的方法:基於SwingUtilities類

Frame[] frames = JFrame.getFrames(); 
    for (Frame frame : frames) { 
     if (frame.isActive()) { 
      return frame; 
     } 
    } 
    for (Frame frame : frames) { 
     if (frame.isVisible()) { 
      return frame; 
     } 
    } 

,還有其他非常有用的方法,看here。 結賬SwingUtilities.getDeepestComponent() or SwingUtilities.getAccessibleAt()