我尝试使用 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 解决了这个问题,但我不明白为什么。