关于Swing和使用EDT进行GUI更新,我有几个问题。我刚刚开始阅读这些内容,因此我是该领域的一个完整的初学者:
SwingUtilities.invokeLater
,将其排队到GUI更新任务(EDT)的当前队列中,对吗?done()
方法在EDT上运行?它设置以下代码: future = new FutureTask<T>(callable) {
@Override
protected void done() {
doneEDT();
setState(StateValue.DONE);
}
};
所以我想知道FutureTask是否以某种方式确保invokeLater
调用它?
感谢您的所有答复。
RepaintManager
来检测大多数此类违规:请参阅本文。actionPerformed
则相应的Action
或ActionListener
将在EDT上被调用。invokeLater
调用只是Runnable
在队列末尾添加。稍候再使用invokeLater
第二次,将Runnable
在先前安排的时间之后添加此新内容Runnable
。doneEDT
private void doneEDT() {
Runnable doDone =
new Runnable() {
public void run() {
done();
}
};
if (SwingUtilities.isEventDispatchThread()) {
doDone.run();
} else {
doSubmit.add(doDone);
}
}
问题内容: 我有一个在EDT上运行的方法,在其中我想使它在新的(非EDT)线程上执行某些操作。我当前的代码如下: 问题答案: 您可以创建并启动一个新的Java线程,该线程从EDT线程中执行您的方法:
EGL 语言是由 IBM 提供的一门面向业务开发的语言。由于它简单易用,具有跨语言、跨平台的特性,目前全球众多大型企业和机构已采用 EGL 来开发他们最核心、最重要的应用程序。 为了更大限度地发挥 EGL 的功能,也为了吸引更多的 EGL 开发者,从 2008 年开始,IBM 着手开始将 EGL 进行开源。2011 年 12 月,EGL 的开源版本 EDT(全称是 EGL Development
我很好奇,在放置组件时,如何使用miglaway在网格上均匀分布组件: 例如,如果我在一个按钮组中放置四个JRadioButton以跨越3行2列(2,3),然后放置三个JButton,则分布的权重是不相等的,我最终会得到以下结果: 如图所示,A和B的大小相同,C保留剩余的空间:我希望A、B、C在垂直方向上等于三分之一。 如果这在GridBagLayout中是可能的,我也可以利用它,但是我在任何一种
问题内容: 我有一个正在Swing中构建的应用程序。它具有可滚动和缩放的图表组件,可以平移和缩放它。整个过程很平滑,除了有时UI会暂停约750 ms,我不知道为什么。这种情况并非总是会发生-但有时应用程序中会发生某些事情,并且每6-8秒就会开始暂停一次。 很显然,EDT上有一些事件需要花费750毫秒左右的时间才能运行,这不应该发生。 我如何特别像这样配置EDT?我真正想做的是获取在每次事件在EDT
下面的代码在Eclipse中运行良好(两种图像处理方法都可以)。但是当导出为可运行的JAR文件时,双击。JAR,什么都没发生。如果我注释掉代码的图像部分,则。JAR在导出和框架构建时运行良好。因此,图像的获取似乎导致了错误。JAR可能会失败。 我有草莓。jpg文件位于“C:\Users\sean\workspace\myApps\bin\testing”中,您能否告知问题是否与我的代码有关? (此
问题内容: 如何知道被阻塞(不是视觉上而是通过检查线程本身)?有办法吗? 我正要去完成大学的最后一项毕业任务,该任务有很多图表,但是对Swing EDT(一般来说是Java)了解很少。 看一下这块: 如果我们执行一些修改块上gui组件的任务(包括调用另一个Thread),那已经是正确的方法了吗? 而且由于EDT是单线程环境,除了直接在GUI内部调用之外,还有其他(至少)一个阻止EDT的部分/示例。