edt - 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 解决了这个问题,但我不明白为什么。
解决方案
推荐阅读
- python - Python:使用 PID 最大化并返回应用程序的屏幕位置
- python - 绘制非多项式多元隐式方程
- angular - 在 Angular 的 ng Bootstrap 日期选择器中无法使用 Years 选项
- c# - 反射 - 收集 WinForm 控件
- python-3.x - 如何在循环中检索中间预测结果
- javascript - 服务工作者启动后主线程的请求待处理
- javascript - JS如何从本地数据中获取数据
- eslint - 配置 ESLint RuleTester 以使用 Typescript Parser
- ios - SwiftUI:在呈现工作表时防止视图刷新
- angular - Angular 5:如何从 .ts 显示返回值以查看