我了解了swing如何不是线程安全的.深入研究,我发现对swing组件的每次修改都必须在Event Dispatch Thread上完成,以防止与多线程相关的各种问题.但是,信息似乎完全停止了.似乎没有一个很好的教程可以解释如何在互联网上访问任何地方.
将来自与其他问题相关的代码中的信息修补在一起,似乎我必须在我的程序中的每个swing修改中放置一个不整齐的代码块(就像我自己的代码中的这个例子):
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
setTitle("Frame title");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(800, 480);
setLocationRelativeTo(null);
setIconImage(Toolkit.getDefaultToolkit().createImage(ClassLoader.getSystemResource("Frame icon.png")));
}
});
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
基本上,这是对的吗?我是否必须将代码(或与invokeLater等效的代码)放在代码中对Swing组件的每次修改中?
另外,为什么Swing不会自动执行此操作?