【问题标题】:Launching a frame from a dialog从对话框启动框架
【发布时间】:2011-11-30 19:47:30
【问题描述】:

我是 Swing 新手,希望有人可以帮助我。

我有一个模态JDialogd1,其中包含一个JXHyperlink,当我单击它时,我应该启动一个JFramef,但是当我这样做时,框架f 位于对话框后面@987654327 @ 所以我想我必须将对话框 d1 设置为非模态才能正常工作,它确实做到了!

   d1.setModal(false)

现在我的问题是我有另一个“模态”对话框d2,它有一个按钮,当我单击它时,它应该启动对话框d1,但由于某种原因d1 落后于d2

我做错了什么?我是否不允许从模态对话框启动非模态对话框?

【问题讨论】:

    标签: java swing awt jdialog


    【解决方案1】:

    模态对话框总是显示在其父级上。因此,如果您从模态对话框运行任何窗口(JFrame、非模态 JDialog),它就会落后。

    解决方案是,如果您希望对话框 d(n) 位于对话框 d(n-1) 上,请将其设为模态并将 d(n-1) 设置为其父级。

    因此,在第一种情况下,您可以将 JFrame 更改为 JDialog 并使其成为模态。每次启动对话框的新实例时,都将应该在它后面的窗口设置为其父窗口。并尽量避免同时打开很多模态对话框。这很烦人。

    【讨论】:

    • 谢谢亚历克斯,我想我必须这样做,但我试图避免进行这样的代码更改,因为 JFrame 也是从其他小部件和框架启动的,这都是大型应用程序。
    【解决方案2】:

    可能值得注意的是,在弹出窗口可见时无法更改模态。您可以更改弹出窗口的可见性 (setVisible(boolean)),然后更改其模态,但如果它可见,则任何模态更改都将无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多