2011-11-30 49 views
2

我是Swing的新手,希望有人能帮助我。从对话框启动框架

我有一个模式JDialogd1包含JXHyperlink,当我点击它,我应该推出一个JFramef然而,当我这样做的框架f进入后面的对话框d1所以我想我必须设置对话框d1非此模式工作,它做到了!现在

d1.setModal(false) 

我的问题是我有另一种“模式”对话框d2,有一个按钮,在那里当我点击它,它应该启动对话框d1但由于某种原因d1去后面d2

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

回答

2

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

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

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

+0

感谢亚历克斯,我觉得我必须这样做,但我试图避免这样的代码更改,因为该JFrame也从其他窗口小部件和框架启动,这是一个大型应用程序的一部分。 – user955165

0

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