5

在我的 Swing 应用程序中。我有JFrame几个JPanels。其中一个用于放置另一个面板。其中一个 - 另一个小组 - 称为JDialog. 对话框的构造函数接受Frame,StringBoolean作为参数。我的问题是如何从此面板获取父级(即框架)?

SwingUtilities.windowForComponent(...)并且SwingUtilities.getWindowAncestor(...)在我的情况下不起作用。没有参数的构造函数不是一个选项。

4

2 回答 2

9

每个 JComponent 都支持方法 getParent()。正如该方法的名称所说,它返回对该组件父级的引用。由于 JDialog、JPanel、JFrame 等是 JComponent 的子类,因此您可以在自己的情况下使用它。但请注意,您必须进行类型转换,例如:

JFrame parentFrame = (JFrame) myContenPane.getParent()

并且根据您的布局,您可能必须多次调用 getParent(),这非常难看。

希望这可以帮助。

于 2012-05-27T20:13:33.640 回答
6

要获取当前面板父级,您可以使用以下方法:

(JFrame)this.getRootpane().getParent();
于 2013-12-10T04:52:01.937 回答