首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDialog通道行为

JDialog通道行为
EN

Stack Overflow用户
提问于 2016-07-12 23:32:04
回答 2查看 78关注 0票数 1

我有一条消息,我想在无模式的JDialog中显示一些信息。父类将调用dispose方法在正确的位置关闭它。下面是我的代码:

代码语言:javascript
复制
    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会吞噬窗格吗?蒂娅。

EN

回答 2

Stack Overflow用户

发布于 2016-07-12 23:44:42

在我看来,手动添加一个JOptionPane作为JDialog的内容是不对的。

JOptionPane有一个用来创建相关JDialog实例的method,所以最好尝试一下:

代码语言:javascript
复制
waitDialog = msg.createDialog("Probe Scan");
票数 1
EN

Stack Overflow用户

发布于 2016-07-13 00:31:33

不能以编程方式关闭该对话框的原因是没有保留对该对话框的引用。一种方法是让waitMessage()方法返回waitDialog实例。或者你可以按照@Berger的建议去做。

另外,

代码语言:javascript
复制
waitDialog.setSize(300,100);
waitDialog.setVisible(true);
waitDialog.pack();

为什么既调用setSize()又调用pack()?下定决心--你是想要一个特定的尺寸,还是想让它看起来像它喜欢的尺寸?而且您应该在调用setSize或pack之后调用setVisible()。

没有'SetDefaultCloseOperation‘方法。

但是有一个setDefaultCloseOperation方法。(请注意小写的第一个字母)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38333225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档