从对话框中启动框架

时间:2011-11-30 19:47:30

标签: java swing awt jdialog

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

我有一个模式JDialog d1,其中包含JXHyperlink,当我点击它时,我应该启动JFrame f但是当我这样做时框架f落后于对话框d1,所以我想我必须将对话框d1设置为非模态才能使其正常工作并且确实如此!

   d1.setModal(false)

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

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

2 个答案:

答案 0 :(得分:2)

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

解决方法是,如果你想要对话框d(n)将在对话框d(n-1)上使其成为模态并将d(n-1)设置为其父对象。

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

答案 1 :(得分:0)

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