java - 为什么会发生 EDT 违规?

标签 java edt

我开始使用 CheckThreadViolationRepaintManager 来检测 EDT 违规。

它提示:

partner = getParameter("partner",generatePartnerSelectionPanel(),Design.partnerSelectionDuration);

因为它不喜欢generatePartnerSelectionPanel() 因为它不喜欢这个方法中的JPanel panel = new JPanel();。但我无法找出为什么会出现问题。

更详细地说,generatePartnerSelectionPanel() 生成了一个 JPanel(我不是在 EDT 中执行的),然后在 getParameter 中我将 JPanel 添加到主 JFrame我在 EDT 中执行此操作(使用 invokeLater)。

那么,为什么会有问题呢?

最佳答案

违反 EDT 并不意味着一定确实出了问题,这意味着您尝试在 EDT 以外的线程上执行 GUI 相关操作(某种情况可能 出错)。

创建新的 Swing 组件包含在“做一些与 GUI 相关的事情”中,因此会发出有关违规的警告。

forum has quite a discussion为什么不建议在其他线程上创建 Swing 组件。

关于java - 为什么会发生 EDT 违规?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2727841/

相关文章:

java - 如何比较 Java 中属性中也包含列表的两个对象

Java,jframe 在拖动问题时调整大小

java - 使用 Spring 根据用户输入在运行时 Autowiring 属性

java - 当有数千个组件时使动画更快

java - 为什么 EventDispatchThread 排在第一位?

java - 为什么要在 EDT 线程外调用 SwingUtils.invokeAndWait() 方法?

java - 简单的 smack jabber 程序需要很长时间才能在 android 上连接

java - 为什么我的 .jar 文件运行速度比 eclipse 中的程序慢?

Java 输入流到 Python (PY4J)