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

时间:2014-02-18 00:05:21

标签: java swing user-interface dialog modal-dialog

在Java中是否有一种简单的方法来创建一个对话框,在对话框关闭之前不会让你改变焦点?比如窗口对话框会使整个屏幕变灰并且只允许您与它进行交互,直到满足它为止。

2 个答案:

答案 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);