2012-05-27 47 views
4

在我的Swing應用程序中。我有一個JFrame和幾個JPanels。其中一個我用來放置另一個面板。其中一個 - 另一個面板 - 稱爲JDialog。對話框構造器接受FrameStringBoolean作爲參數。我的問題是如何從這個面板獲得父母(這是框架)?如何從JPanel獲得JDialog的父項

SwingUtilities.windowForComponent(...)SwingUtilities.getWindowAncestor(...)不適用於我的情況。沒有參數的構造函數不是一個選項。

+0

使用技術展[這裏](http://stackoverflow.com/a/10611286/418556)。如果你不能爲你的用例做出這項工作,請發佈你的最佳嘗試[SSCCE](http://sscce.org/)。 –

+1

@ user1420504只是要知道,爲什麼'SwingUtilities.getWindowAncestor(...)'在你的情況下工作? – Timmos

回答

8

每個JComponent都支持Method getParent()。正如方法的名稱所示,它將返回對此組件的父項的引用。由於JDialog,JPanel,JFrame等是JComponent的子類,因此您可以使用它。 但請注意,您必須進行類型轉換,例如:

JFrame parentFrame = (JFrame) myContenPane.getParent()

,並根據您的佈局,您可能需要調用的getParent()多次,這是相當難看。

希望這會有所幫助。

6

爲了得到當前面板父母可以使用下面的方法:

(JFrame)this.getRootpane().getParent(); 
+0

大寫字母:(JFrame)this.getRootPane()。getParent(); – Ted