首页 > 解决方案 > JOptionPane.showMessageDialog 显示空消息

问题描述

我尝试使用 swing-gui 应用程序中的 JOptionPane.showMessageDialog 方法显示消息。但我收到一条空消息:meassage dialog。我用谷歌搜索了这个问题,发现了一个类似的问题。答案是必须在 Swing 事件调度线程上调用 showMessageDialog 方法。如果是这样,我添加了一个测试,结果证明是这样,但它仍然不起作用:

import javax.swing.*;
import java.awt.*;

public class Test extends JPanel {
    public static void main(String[] args) {
        Test test = new Test();
        JFrame game = new JFrame(  );
        game.setSize(450, 500);
        game.add(test);
        game.setVisible(true);
    }

    public void paint(Graphics g) {
        if (javax.swing.SwingUtilities.isEventDispatchThread( ))
            JOptionPane.showMessageDialog(this, "Running on EDT");            
    }    
}

使用 SwingUtilities.invokeLater 方法运行 showMessageDialog 解决了这个问题,但我不明白为什么。

标签: edt

解决方案


推荐阅读