我有一条消息,我想在无模式的JDialog中显示一些信息。父类将调用dispose方法在正确的位置关闭它。下面是我的代码:
private static void waitMessage() {
JOptionPane msg=new JOptionPane("Trying to get probes. Please wait ...",
JOptionPane.INFORMATION_MESSAGE,JOptionPane.DEFAULT_OPTION,
null,new Object[]{},null);
waitDialog=msg.createDialog("Probe Scan");
waitDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
waitDialog.setModalityType(ModalityType.MODELESS);
waitDialog.setSize(300,100);
waitDialog.setVisible(true);
}问题是,当我设置ModalityType.DOCUMENT_MODAL时,消息会按预期显示。当然,JDialog块并不是我所需要的。

但是,当我设置ModalityType.MODELESS时,我得到如下结果:

JDialog不会阻止,但消息文本不会显示。有人能解释一下为什么ModalityType会吞噬窗格吗?蒂娅。
发布于 2016-07-12 23:44:42
在我看来,手动添加一个JOptionPane作为JDialog的内容是不对的。
JOptionPane有一个用来创建相关JDialog实例的method,所以最好尝试一下:
waitDialog = msg.createDialog("Probe Scan");发布于 2016-07-13 00:31:33
不能以编程方式关闭该对话框的原因是没有保留对该对话框的引用。一种方法是让waitMessage()方法返回waitDialog实例。或者你可以按照@Berger的建议去做。
另外,
waitDialog.setSize(300,100);
waitDialog.setVisible(true);
waitDialog.pack();为什么既调用setSize()又调用pack()?下定决心--你是想要一个特定的尺寸,还是想让它看起来像它喜欢的尺寸?而且您应该在调用setSize或pack之后调用setVisible()。
没有'SetDefaultCloseOperation‘方法。
但是有一个setDefaultCloseOperation方法。(请注意小写的第一个字母)
https://stackoverflow.com/questions/38333225
复制相似问题