Java 在其他任何事情发生之前必须完成的对话框

Java 在其他任何事情发生之前必须完成的对话框,java,swing,user-interface,dialog,modal-dialog,Java,Swing,User Interface,Dialog,Modal Dialog,在Java中,有没有一种简单的方法来创建一个对话框,它在关闭之前不会让您改变焦点?例如,windows对话框会使整个屏幕变灰,并且只允许您与之交互,直到您满意为止 您可以使用JDialog轻松实现这一点 JDialog dialog = new JDialog(Frame owner, "My modal dialog", **true**) 您可以使对话框成为阻止用户输入的模态。发件人: 模态对话框-一个对话框,阻止输入到其他 应用程序中的顶级窗口,使用创建的窗口除外 将对话框作为其所有者。

在Java中,有没有一种简单的方法来创建一个对话框,它在关闭之前不会让您改变焦点?例如,windows对话框会使整个屏幕变灰,并且只允许您与之交互,直到您满意为止

您可以使用JDialog轻松实现这一点

JDialog dialog = new JDialog(Frame owner, "My modal dialog", **true**)

您可以使对话框成为阻止用户输入的模态。发件人:

模态对话框-一个对话框,阻止输入到其他 应用程序中的顶级窗口,使用创建的窗口除外 将对话框作为其所有者。“模式”对话框捕获 窗口聚焦直到关闭,通常是对按钮的响应 记者

有四种类型的模态(同样来自教程):

  • 无模式类型-无模式对话框不会阻止任何其他可见窗口
  • 文档模式类型-文档模式对话框阻止来自同一文档的所有窗口,但来自其子文档的窗口除外 等级制度在此上下文中,文档是窗口的层次结构 共享一个共同的祖先,称为文档根,即 没有所有者的最近祖先窗口
  • 应用程序模式类型-应用程序模式对话框阻止来自同一应用程序的所有窗口,但来自其子应用程序的窗口除外
    等级制度如果在浏览器环境中启动多个小程序,
    允许浏览器将它们视为单独的应用程序
    或者作为单个应用程序。这种行为是
    依赖于实现
  • 工具箱模式类型-工具箱模式对话框阻止在同一工具箱中运行的所有窗口,但子工具箱中的窗口除外
    等级制度如果启动了多个小程序,则所有小程序都将使用
    同样的工具包。因此,从小程序显示工具箱模式对话框
    可能会影响其他小程序和浏览器实例的所有窗口 嵌入此工具包的Java运行时环境
您可以使用创建对话框。只需使用一个接受modal标志并将modal设置为true的构造函数。如果需要,可以指定上述类型之一,但默认情况下它将是
APPLICATION\u MODAL

这是一个简单的构造函数,您可以使用:

public JDialog(Dialog owner, String title, boolean modal)
所以你只要加上

JDialog dialog = new JDialog(owner, "My test modal dialog", true);
看见