[英]Forcing EDT Thread for Swing Libraries
所有与GUI相关的代码仅应从EDT
执行。 在Android
开发中,类似的事情似乎是强制执行的,因此,如果您在主线程中进行了网络调用等操作,您将获得异常。 但是,对于开发Java
桌面应用程序,没有这种东西。 很容易忘记EDT
并仍在另一个线程中执行GUI代码。 这可能会导致奇怪的故障/错误,因为Swing
不是线程安全的 。 有没有一种方法可以默认对每个GUI代码强加EDT
的使用,类似于Android
更加严格的方法? 我不想手动检查所有内容,而是在违反EDT
使用建议的情况下得到异常。 我正在使用IntelliJ IDEA
。
就Java代码而言,可以为每个Swing库方法自动插入以下内容:
if(!SwingUtilities.isEventDispatchThread())
{
throw new IllegalStateException("EDT property violated");
}
有什么办法吗?
有一个ThreadCheckingRepaintManager,请参见此处: ThreadCheckingRepaintManager
您可以像这样使用它:
public static void main(String args[]) {
RepaintManager.setCurrentManager(new ThreadCheckingRepaintManager(true));
//Create your UI here
}
现在,只要有EDT问题,您都将在控制台中获得一条信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.