在任务栏中显示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); 

将工作。