如何通过JFrames覆盖对话框?

时间:2011-03-15 17:14:18

标签: java swing jframe

我有一个java程序可以解决这个问题:

它从对话框开始,然后在用户单击“确定/取消”或X或其他任何内容后,它将转到JFrame或对话框。 JFrame还有像Next / Ok等按钮。随着程序的继续,一个JFrame(让我们称之为“状态栏”)总是在屏幕上可见,永远不会消失(这就是我想要的)。 (我不想丢弃它,因为它们包含用户在未来对话框和其他JFrame上做出选择时需要查看的重要信息)。

现在我的问题发生..当出现未来的对话框时,我无法点击该JFrame“状态栏”。出于某种原因,我必须先在对话框上执行某些操作。就像我必须在对话框中单击“确定/取消”,如果我得到另一个对话框(取决于程序的位置),我有同样的问题。在我得到另一个JFrame的祝福之前,我可以点击“状态栏”JFrame,点击它上面的按钮以及该JFrame上显示的所有好东西。

一种解决方案是将剩余的所有对话框转换为JFrame,但由于我有各种对话框,因此需要花费很多时间。然后将所有内容链接在一起将非常耗时。

因此,有一个函数或代码可以告诉Java ...让用户有权与JFrame“状态栏”进行交互,同时屏幕上会出现一个对话框。

我希望我有意义。请问是否有问题。我很感激帮助。

2 个答案:

答案 0 :(得分:1)

在所有对话框上调用setModal(false)方法,这样您就可以在JDialog打开时转到JFrame。

答案 1 :(得分:1)

如果您使用的是Java 6,则可以使用新的模态设置。

Modality in dialogs

根据您的GUI设计,您可能希望使对话框文档模态而不是无模式(相当于setModal(false))。请注意,这仅在对话框显示在与Progress JFrame不同的根容器中时才有效。

另一个选项是在您希望始终可见的JFrame上设置模式排除。这样您的对话框仍然可以阻止其他帧,每次添加新对话框时都不需要记住setModal(false)

progressFrame.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);