如何从JPanel获取JDialog的父级

use*_*504 4 java swing jframe jdialog

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

SwingUtilities.windowForComponent(...)并且SwingUtilities.getWindowAncestor(...)不适用于我的情况.没有参数的构造函数不是一个选项.

gma*_*ami 8

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

JFrame parentFrame = (JFrame) myContenPane.getParent()

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

希望这可以帮助.


vin*_*nay 6

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

(JFrame)this.getRootpane().getParent();
Run Code Online (Sandbox Code Playgroud)