我很惊讶我找不到快速解决方案。我一直在编写Java Swing应用程序很长一段时间。我自己,我总是很好地编写代码,以便代码只与AWT线程内部的各种视觉元素进行交互,所有这些都是很好的事件驱动。当外部事件发生时,比如说,需要显示的传入数据,我会锁定数据结构,然后在AWT威胁上让可视代码重新绘制它。没问题。但问题是项目中还有其他编码人员,而且有些人提供了难以检查的代码。现在有一些错误我怀疑是由于代码在另一个线程上对AWT线程之外的Swing进行了更改。
我所追求的是一种简单的机制,即陷阱和阻塞,和/或显示违规代码的堆栈跟踪,错误地与错误线程上的Swing交互。 不幸的是,javax.swing代码没有内置任何检查。 我在想,以某种方式使环境变得无头,陷入某种低级别的东西,只会在派遣的AWT事件中回复。 或者,做一些非常激烈的事情,比如使用自定义类加载器,以某种方式换掉整个包。也许不同的线程可以拥有自己的类加载器?如果可以,那么AWT线程可能被设置为看到正常的javax.swing内容,而其他线程则被设置为伪装的假javax.swing。
或者,也许有些IDE已经内置了这些技巧?我正在使用IntelliJ IDEA。
有没有人知道任何技巧?这只是在开发过程中需要的。所以使用bootclassloader重写javax.swing是可以的。我不能成为第一个寻找这个的人吗?