【问题标题】:Is there a way to change the owner of a JDialog?有没有办法更改 JDialog 的所有者?
【发布时间】:2010-10-07 21:56:19
【问题描述】:

我有一个非常具体的问题,我想知道是否有办法更改 JDialog 的所有者(可以使用构造函数设置)。我想没有“官方”的可能性(除了黑客),但我想确保我没有错过任何东西。有关该主题的任何想法或提示都会有所帮助,已经谢谢...

【问题讨论】:

  • 你到底为什么要这么做?

标签: java swing jdialog


【解决方案1】:

我能想到的唯一事情属于不安全的黑客攻击(使用反射并更改所有者,但这可能会在不同版本的 JVM 下发生变化(即使来自同一平台上的同一供应商)。

也许你要问一个更好的问题是“这就是我想要做的......我真的需要更改对话框的所有者还是有更好的方法”?我正在想办法想换主人的理由,但我想不出任何……

【讨论】:

    【解决方案2】:

    如果您的问题是关于如何在应用程序生命周期中重用对话框,那么更好的方法是:

    1. 将所有对话框内容定义为 JPanel 子类
    2. 并使用现有的 JPanel 子类实例实例化一个新的 JDialog

    对于第 2 点,您当然可以对面板使用惰性求值(仅在首次使用时实例化,然后重复使用)。

    您还需要让您的面板实现一些(您自己的)接口,允许您重新初始化它们以便在新的 JDialog 中重复使用(重新初始化通常意味着擦除所有字段内容,或将这些字段设置回它们的默认值值)。

    【讨论】:

      【解决方案3】:

      j:

      当表格单元格中的文本太长而无法显示时,我也需要在我的应用程序中使用单个“全局”对话框来提供“注释”对话框。在这种情况下,用户可以悬停或右键单击单元格并获得一个显示整个文本的对话框。但是,我希望对话框快速显示,尤其是在悬停时,所以我想简单地显示和隐藏它。我决定创建这个对话框并将其存储在主类中,并以应用程序框架为所有者。然后,只要拥有者是框架的任何视图需要注释对话框,视图就可以从主类中获取它。在对话框需要注释对话框的那些实例中,父对话框可以创建具有适当所有者的注释对话框的新实例。由于这些父对话框(至少在我的应用程序中)在关闭时被释放,额外的注释对话框实例将超出范围并被垃圾收集。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-28
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多