我想要在无模式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会弹出窗格吗? TIA。
答案 0 :(得分:1)
手动添加JOptionPane
作为JDialog
的内容,并不适合我。
JOptionPane
有一个method用于创建相关的JDialog
个实例,所以最好试试这个:
waitDialog = msg.createDialog("Probe Scan");
答案 1 :(得分:0)
无法以编程方式关闭对话框的原因是您没有保留对该对话框的引用。一种方法是让waitMessage()方法返回waitDialog实例。或者你可以像@Berger建议的那样做。
另外,
waitDialog.setSize(300,100);
waitDialog.setVisible(true);
waitDialog.pack();
为什么要调用setSize()和pack()?下定决心 - 你想要它是一个特定的尺寸,还是你希望它出现在它的首选尺寸?你应该在调用setSize或pack之后调用setVisible()。
没有' SetDefaultCloseOperation'方法
但是有setDefaultCloseOperation
方法。 (注意小写的第一个字母)