2

我在我的生产代码中使用这种风格:

if (SwingUtilities.isEventDispatchThread()) {
    JOptionPane.showMessageDialog(parent, "message", "title", JOptionPane.INFORMATION_MESSAGE);
} else {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            JOptionPane.showMessageDialog(parent, "message", "title", JOptionPane.INFORMATION_MESSAGE);
        }
    });
}

它在大多数情况下运行良好,但有时它只是显示一个只有标题的空白对话框。对这个问题有任何想法吗?

4

1 回答 1

0

我认为这是因为SwingUtilities.isEventDispatchThread()SwingUtilities.invokeLater();

但是,你确定你的代码是正确的吗?

这些是showMessageDialog()

showMessageDialog(Component c, Object msg);

showMessageDialog(Component c, Object msg, String title, int messageType)

showMessageDialog(Component c, Object msg, String title, int messageType, Icon icon)

但是在您的代码中,您的第一个参数需要一个String!!

于 2013-03-22T05:28:40.387 回答