gpt4 book ai didi

java - 为 Swing 库强制使用 EDT 线程

转载 作者:行者123 更新时间:2023-12-02 02:45:20 26 4
gpt4 key购买 nike

所有 GUI 相关代码只能从 EDT 执行。在 Android 开发中,类似的事情似乎是强制执行的,所以如果你这样做,你会得到一个异常,例如在主线程中进行网络调用。然而,对于开发Java桌面应用程序来说,却没有这样的事情。人们很容易忘记EDT而仍然在另一个线程中执行GUI代码。这可能会导致奇怪的故障/错误,因为 Swing is not thread-safe 。有没有一种方法可以强制强制每个 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 问题,您就会在控制台中收到信息。

关于java - 为 Swing 库强制使用 EDT 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com