如何从JPanel获取JDialog的父级

时间:2012-05-27 19:29:14

标签: java swing jframe jdialog

在我的Swing应用中。我有JFrameJPanels很少。其中一个用于放置另一个面板。其中一个 - 另一个小组 - 调用JDialog。对话框的构造函数接受FrameStringBoolean作为参数。我的问题是如何从这个面板获取父(这是框架)?

SwingUtilities.windowForComponent(...)SwingUtilities.getWindowAncestor(...)在我的案例中不起作用。没有参数的构造函数不是一个选项。

2 个答案:

答案 0 :(得分:8)

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

JFrame parentFrame = (JFrame) myContenPane.getParent()

根据您的布局,您可能需要多次调用getParent(),这非常难看。

希望这有帮助。

答案 1 :(得分:6)

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

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