【问题标题】:JDialog modality and class extendingJDialog 模式和类扩展
【发布时间】:2012-08-31 11:55:21
【问题描述】:

所以,我需要创建一个扩展JDialog 的类,以从主函数代码中删除JDialog 代码。

但是,在创建 JDialog 之后,我不知道如何设置它的父 JFrame

通常通过将JFrame 传递给构造函数来完成,但由于它是一个自定义类,我不知道如何将其设置为JDialogs 父级。我找不到任何JDialog.setParent(JFrame); 类型的方法,希望您能理解问题。

有什么建议吗?

【问题讨论】:

    标签: java swing jframe modal-dialog jdialog


    【解决方案1】:

    您可以在 JDialog 的构造函数或 setter 方法中设置父级。然后,当您创建对话框时,您将知道父级,并可以将其传递给参数。然后您可以将参数传递给超级构造函数。

    顺便说一句,我很少需要扩展 JDialog、JFrame 或任何顶级窗口,而是更喜欢“开箱即用”并在需要时使用它们。

    【讨论】:

      【解决方案2】:

      WindowFrameDialog)在 API 中被称为所有者。只能通过调用超类(JDialog)构造函数在构造函数中提及。

      例子:

      public class SomeDialog extends JDialog {
      
        public SomeDialog() {
          // see other JDialog constructors for other ways to call this
          super(parentWindow, title, ModalityType.DOCUMENT_MODAL);
          ...
        }
      
      }
      

      在创建自定义JDialog 之后,您以后无法设置它。

      【讨论】:

      • 我还有一个问题。如何在主要功能(或任何其他)中处理它?我已经声明了它并设置为 null,稍后在代码中我创建了一个实例并将它与变量连接起来。我打电话后
      • 调用 dispose() 将释放你的对话框。
      • 我按回车太快了...我在主函数代码中调用它(在主函数内附加到 JButton 的 actionlistener 代码中)。我正在从另一个函数中处理它。如果我在声明它时不实例化它,我会得到 nullpointerexception,如果我实例化它,它会在它应该出现之前显示在屏幕上。
      • 没关系,我放弃了从主类/方法中排除它的想法,我只是把它放回去了......
      猜你喜欢
      • 1970-01-01
      • 2014-08-06
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多