2012-05-27 41 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