Java 如何从JPanel获取JDialog的父级

Java 如何从JPanel获取JDialog的父级,java,swing,jframe,jdialog,Java,Swing,Jframe,Jdialog,在我的Swing应用程序中。我有一个JFrame,几乎没有jpanel。其中一个我用来放置另一个面板。其中一个——另一个面板——调用JDialog。对话框的构造函数接受帧、字符串和布尔值作为参数。我的问题是如何从该面板获取父对象(即帧) SwingUtilities.windowForComponent(…)和SwingUtilities.getwindowsensort(…)在我的情况下不起作用。没有参数的构造函数不是选项。每个JComponent都支持getParent()方法。正如该方法的

在我的Swing应用程序中。我有一个
JFrame
,几乎没有
jpanel
。其中一个我用来放置另一个面板。其中一个——另一个面板——调用
JDialog
。对话框的构造函数接受
字符串
布尔值
作为参数。我的问题是如何从该面板获取父对象(即帧)


SwingUtilities.windowForComponent(…)
SwingUtilities.getwindowsensort(…)
在我的情况下不起作用。没有参数的构造函数不是选项。

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

JFrame parentFrame=(JFrame)myContentPane.getParent()

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


希望这有帮助。

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

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

运用技巧表演。如果您无法使其适用于您的用例,请发布您的最佳尝试。@user1420504只是想知道,为什么
SwingUtilities.getWindow祖先(…)
不适用于您的用例?大写:(JFrame)this.getRootPane().getParent();