[英]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.Timer
或SwingWorker
。 是的,您可以使用Thread
,您负责确保将UI的所有更新同步回EDT,其他两个建议提供机制。
有关更多详细信息,请参阅Swing中的Concurrency
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.