- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所有 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/
只是想一想我的一些重复代码: Runnable run = new Runnable() { @Override public void run() { // Some EDT cod
我在 Java 库中使用一个 API,它从事件分派(dispatch)线程调用并要求我返回一个完全初始化的 UI 组件。它看起来像这样: public JDialog createDialog()
我有一个在 EDT 上运行的方法,我想让它在一个新的(非 EDT)线程上执行一些事情。我当前的代码如下: @Override public void actionPerformed(Actio
我有以下测试方法: @Test public void f3KeystrokeShowsHotkeysDialog() throws AWTException{ App app = new A
我正在开发一个项目,该项目需要进行一些密集的数学计算(矩阵、 vector 数组等),因此我很自然地将工作分成多个作业,并将它们提交给 CompletionService 以并行执行工作. 每个作业对
所以我对 MVC 结构还很陌生。我真的很困惑何时何地在 EDT 上添加我的 Gui 部分。这是我真正困惑的地方: public class ECPS_MVC { //edt? Ecps
如果从 EDT 线程调用某些方法出现未经检查的异常,会发生什么情况?它能保持 GUI 的响应能力还是什么?谢谢您 最佳答案 Before restarting, does the EDT shutdo
我对了解 Swing 乐和 EDT 的追求再次继续...... 由于 EDT 是唯一的 EDT,所以我现在想知道哪些方法、构造函数和任何其他内容应该在 EDT 中完成。我知道一般规则,几乎所有创建 S
该示例不断绘制各种颜色的方 block 。方 block 的数量取决于 JFrame 的大小。 在执行示例时,使用鼠标放大或缩小尺寸框,将会增加或减少可见闪烁方 block 的数量。 该帧的时间栏显示
我按照别人告诉我的方式处理我的游戏循环,添加了 Swing 计时器等(除了重写paintComponent,因为它在这种情况下不适用),但我的游戏循环拒绝调用事件调度线程。因此,JFrame 不会关闭
正如我在 earlier post 上与 Inerdia 讨论的那样, 事情仍然很奇怪当我在一些 JPanel 中(肯定是 EDT - 我用方法检查进行了检查)然后我调用一些动画线程(线程扩展线程)来
我想创建新线程(用于服务器)。我有 textArea 来放置日志,我创建了一个新的类状态来处理它。我为对象“服务器”运行新线程,尝试将状态对象“传递”到服务器,并且执行 status.setStatu
我正在用 Java 编写 Sugarscape 模拟,需要一个工作的 GUI。 Sugarscape 是一种空间景观,由(糖的)瓷砖和移动和消耗糖的代理组成。为简单起见,我只有一个代理,没有糖——我只
如何知道 EDT 被阻塞(不是直观地而是通过检查线程本身)?有办法吗? 我正在完成最后的大学毕业任务,其中有一堆图表,但对 Swing EDT(通常是 Java)知之甚少。 看看这篇文章: Swin
我一直在问很多关于我最近正在进行的项目的问题。这是我所处的场景,任何帮助或指出正确方向都会有很大帮助...... 这是一个由一个服务器和多个客户端构建的网络程序。每个客户端都有一个 GUI,它必须根据
我有一个在 EDT 内执行的方法。事情是这样的: myMethod() { System.out.prinln(SwingUtilities.isEventDispatchThread());
我正在尝试学习 Swing 的复杂性,并且已经阅读了大量有关事件调度线程的内容。我明白这是为了什么,但是我正在为以下概念而苦苦挣扎: 我有一个以正常方式调用的 JFrame: public cla
我想知道 Java 中的事件调度线程何时启动。 它是主线程,还是在Window/Frame构造函数中启动? 如果检测到 AWT/Swing 的使用,是否由 JVM 启动? 最佳答案 主线程不是 EDT
我认为提出问题的最简单方法是逐步解决问题。我对 EDT 的某些工作原理有些困惑。 是否有任何对象是从在 EDT 上创建的 Swing 组件创建的? 要扩展这个问题,如果我创建一个 JFrame,并在其
嗨,我想在 EDT 之外完成一项任务: new Thread(new Runnable(){ @Override public void
我是一名优秀的程序员,十分优秀!