【发布时间】:2014-10-02 16:25:15
【问题描述】:
我是 Java 新手,在阅读了许多关于线程和 Swing 的文章后,我了解到 Swing 方法的所有调用都应该在 EDT 上完成,因为 Swing 不是线程安全的。然而,在阅读 EDT 之前,我已经编写了几个相当长的 Swing 应用程序。我所有的应用程序都运行得很好。所以我的问题是我的 Swing 应用程序是默认运行在 EDT 上还是运行在不同的线程上,我很幸运没有遇到任何问题?
例如,如果我将 JButton 添加到 JPanel 或 JFrame,或者如果我只是调用 JTextField 的 Field.setText(),这些操作是否会默认在 EDT 上运行?
如果答案是否定的,那么我是否必须通过调用 SwingUtilities.invokeLater()
谢谢
【问题讨论】:
-
这个问题包含一些可以自动检测错误的工具(请注意,它们不会发现所有错误,因为它们只监控重绘)。 stackoverflow.com/questions/3014972/…
标签: java multithreading swing