我是Swing的新手,希望有人可以帮助我。
我有一个模式JDialog
d1
,其中包含JXHyperlink
,当我点击它时,我应该启动JFrame
f
但是当我这样做时框架f
落后于对话框d1
,所以我想我必须将对话框d1
设置为非模态才能使其正常工作并且确实如此!
d1.setModal(false)
现在我的问题是我有另一个“模态”对话框d2
,其中有一个按钮,当我点击它时,它应该启动对话框d1
但由于某种原因d1
落后d2
。
我做错了什么?我不允许从模态对话框启动非模态对话框吗?
答案 0 :(得分:2)
模态对话框始终显示在其父级上。因此,如果你从模态对话框中运行任何窗口(JFrame,非模态JDialog),它就会落后。
解决方法是,如果你想要对话框d(n)将在对话框d(n-1)上使其成为模态并将d(n-1)设置为其父对象。
因此,在第一种情况下,您可以将您的JFrame更改为JDialog,使其成为模态。每次启动对话框的新实例时,都应将其后面的窗口设置为其父级。并尽量避免同时打开很多模态对话框。这很烦人。
答案 1 :(得分:0)
值得注意的是,弹出窗口可见时无法进行模态更改。您可以更改弹出窗口的可见性(setVisible(boolean)),然后更改其模态,但如果可见,则任何模态更改都不会生效。