Swing项目中的一个需求需要实现的功能JFrame中弹出的dialog对话框中通过按钮事件弹出新的jframe窗口。Jdialog覆盖主jframe但是不能覆盖新的jFrame窗口
实现方式是修改jdialog的mode方式setModalityType(ModalityType.DOCUMENT_MODAL),然后在按钮事件中打开jframe即可
java.awt.EventQueue.invokeLater(new Runable(){
new JFrame1().setVisible(true);
})
通过看Jdialog的源码,初始化时设置的mode为ture时,设置的ModalityType值为APPLICATION_MODAL,false时设置的是MODELESS,
APPLICATION_MODAL |
APPLICATION_MODAL 对话框阻止来自同一Java应用程序的所有顶级窗口,但来自其自己的子层次结构的窗口除外。 |
---|---|
DOCUMENT_MODAL |
DOCUMENT_MODAL 对话框阻止来自同一文档的所有顶级窗口的输入,但来自其自己的子层次结构的窗口除外。 |
MODELESS |
MODELESS 对话框不会阻止任何顶级窗口。 |
TOOLKIT_MODAL |
TOOLKIT_MODAL 对话框阻止从同一工具箱运行的所有顶级窗口,但来自其自己的子层次结构的窗口除外。 |