在我的Swing应用中。我有JFrame
,JPanels
很少。其中一个用于放置另一个面板。其中一个 - 另一个小组 - 调用JDialog
。对话框的构造函数接受Frame
,String
和Boolean
作为参数。我的问题是如何从这个面板获取父(这是框架)?
SwingUtilities.windowForComponent(...)
和SwingUtilities.getWindowAncestor(...)
在我的案例中不起作用。没有参数的构造函数不是一个选项。
答案 0 :(得分:8)
每个JComponent都支持Method getParent()。正如方法的名称所示,它返回对此组件的父级的引用。由于JDialog,JPanel,JFrame等是JComponent的子类,因此您可以在您的情况下使用它。 但请注意,您必须进行类型转换,例如:
JFrame parentFrame = (JFrame) myContenPane.getParent()
根据您的布局,您可能需要多次调用getParent(),这非常难看。
希望这有帮助。
答案 1 :(得分:6)
要获取当前面板父级,您可以使用以下方法:
(JFrame)this.getRootpane().getParent();