繁体   English   中英

事件调度线程执行

[英]Event Dispatching Thread execution

使用Java Swing,是否可以暂停当前线程Runnable并为Event Dispatching Thread提供空间来更新gui?

我知道有可能使用多线程( SwingWorker class ),但我想知道是否有一种更简单的方法来实现单线程程序(也就是说:我的所有代码都在gui的Run() )。

例如Matlab有非常方便的drawnow; 方法

如果不是:如何将更新任务拆分为第二个线程而不必重写任何内容? 那是从这个链接中 运行的线程更新gui吗?

最简洁的答案是不。 如果您暂停当前线程(根据您是EDT),那么您暂停EDT ...

您可以使用repaint方法请求更新UI,但这也假设您没有使用循环和暂停等操作阻止EDT,因为EDT需要时间来处理这些请求。

不,我不会按照链接的建议,因为它违反了Swing的单线程,通过更新EDT之外的组件

根据您的需要,您可能需要使用javax.swing.TimerSwingWorker 是的,您可以使用Thread ,您负责确保将UI的所有更新同步回EDT,其他两个建议提供机制。

有关更多详细信息,请参阅Swing中的Concurrency

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM