在Java中是否有一种简单的方法来创建一个对话框,在对话框关闭之前不会让你改变焦点?比如窗口对话框会使整个屏幕变灰并且只允许您与它进行交互,直到满足它为止。
答案 0 :(得分:6)
您可以使用JDialog
轻松完成此操作JDialog dialog = new JDialog(Frame owner, "My modal dialog", **true**)
答案 1 :(得分:2)
您可以设置阻止用户输入的对话框模式。来自Oracle modality tutorial:
“模态”对话框 - 一个阻止其他输入的对话框 应用程序中的顶级窗口,但使用的窗口除外 对话框作为其所有者。模态对话框捕获 窗口焦点,直到它关闭,通常是响应一个按钮 按
有四种类型的模态(同样来自教程):
- 无模式类型 - 无模式对话框在可见时不会阻止任何其他窗口。
- 文档模式类型 - 文档模式对话框会阻止同一文档中的所有窗口,但子窗口除外 层次结构。在此上下文中,文档是窗口的层次结构 共享一个共同的祖先,称为文档根,即 没有所有者的最近的祖先窗口。
- 应用程序模式类型 - 应用程序模式对话框阻止来自同一应用程序的所有窗口,但子窗口除外 层次结构。如果在浏览器环境中启动了多个小程序, 允许浏览器将它们视为单独的应用程序 或作为单一的申请。这种行为是 实现相关的。
- Toolkit-modal type - 工具箱模式对话框阻止在同一工具箱中运行的所有窗口,除了来自其子窗口的窗口
层次结构。如果启动了几个小程序,则所有小程序都以
运行 相同的工具包。因此,从applet中显示的工具包模式对话框 可能会影响其他applet和浏览器实例的所有窗口 为此工具包嵌入Java运行时环境。
您可以使用JDialog创建对话框。只需使用一个带有模态标志的构造函数并将模态设置为true。如果需要,您可以指定上述类型之一,但默认情况下它将是APPLICATION_MODAL
。
这是一个可以使用的简单构造函数:
public JDialog(Dialog owner, String title, boolean modal)
所以你只需添加
JDialog dialog = new JDialog(owner, "My test modal dialog", true);