【问题标题】:How to get parent for JDialog from JPanel如何从 JPanel 获取 JDialog 的父级
【发布时间】:2012-05-27 19:29:14
【问题描述】:

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

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

【问题讨论】:

  • 使用技术 show here。如果您无法使该功能适用​​于您的用例,请发布您的最佳尝试SSCCE
  • @user1420504 只是想知道,为什么SwingUtilities.getWindowAncestor(...) 在您的情况下不起作用?

标签: java swing jframe jdialog


【解决方案1】:

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

JFrame parentFrame = (JFrame) myContenPane.getParent()

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 大写:(JFrame)this.getRootPane().getParent();
    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2011-10-20
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多