在任务栏中显示JDialog不起作用
我正在使用下面的代码在任务栏上显示JDialog,并且在JDK 1.6中完全正常工作。
public class test8 { public static void main(String[] args) { Runnable r = new Runnable() { public void run() { JDialog d = new JDialog((Frame)null,Dialog.ModalityType.TOOLKIT_MODAL); d.setTitle("title"); d.setSize(300,200); d.setVisible(true); System.exit(0); } }; EventQueue.invokeLater(r); } }
但是当我使用该方法设置模态类型时,它无法正常工作
public class test8 { public static void main(String[] args) { Runnable r = new Runnable() { public void run() { JDialog d = new JDialog(); d.setTitle("title"); d.setSize(300,200); d.setModalityType(Dialog.ModalityType.TOOLKIT_MODAL); d.setVisible(true); System.exit(0); } }; EventQueue.invokeLater(r); } }
这两个代码有什么区别? 有没有办法用这个方法来解决这个问题?
问题是,如果由于历史原因所有者为null
,则JDialog
某些构造函数会创建一个虚拟框架所有者。 但是, Dialog
不能像顶级窗口那样显示所有者。 即
JDialog d=new JDialog((Window)null); d.setModalityType(ModalityType.TOOLKIT_MODAL); d.setVisible(true);
将工作。