首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用invokeLater逐个显示对话框

使用invokeLater逐个显示对话框
EN

Stack Overflow用户
提问于 2010-11-30 14:44:51
回答 3查看 1.3K关注 0票数 2

在两个不同的动作监听器中,当满足某些条件时,将显示一个对话框。如果两个动作监听器都需要显示对话框,则同时显示2个对话框。但我希望他们一个接一个地展示。

简化代码:

代码语言:javascript
复制
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JOptionPane.showMessageDialog(getTopLevelAncestor(), "dialog 1");
            }
        });

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JOptionPane.showMessageDialog(getTopLevelAncestor(), "dialog 2");
            }
        });

这两个"SwingUtilities.invokeLater“调用位于不同的类中。

EN

回答 3

Stack Overflow用户

发布于 2010-11-30 15:56:47

创建一个跟踪它的类;这个类将包含一个要显示的对话框队列;当一个对话框关闭时,将显示队列中的第一个并从队列中删除。当另一个类需要显示一个对话框时,如果队列是空的,或者插入到队列中,它会立即显示出来。

票数 1
EN

Stack Overflow用户

发布于 2010-11-30 16:10:24

这与对话框的形式有关。有一篇关于这个主题http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/modality/的非常有用的文章。对话框具有不同的通道类型和不同的优先级。您可以通过创建优先级较低的第二个对话框来解决问题:

代码语言:javascript
复制
JOptionPane pane = new JOptionPane("dialog 2", JOptionPane.INFORMATION_MESSAGE);
JDialog dialog = pane.createDialog("Message");
dialog.setModalityType(Dialog.ModalityType.DOCUMENT_MODAL);
dialog.setVisible(true);

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-08-06 04:43:39

如果你需要invokeAndWait(),这个方法会一直等到Runnable完成。

或者在您的情况下,当第一个对话框关闭时。

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

https://stackoverflow.com/questions/4311203

复制
相关文章

相似问题

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