首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >侦察Eclipse用户定时器

侦察Eclipse用户定时器
EN

Stack Overflow用户
提问于 2015-08-18 06:17:19
回答 1查看 103关注 0票数 1

我想在童子军类中使用计时器来改变童子军元素的UI。

例如:我有一些标签,希望在一段时间后更改值:

代码语言:javascript
复制
  Timer timer = new Timer();
  timer.schedule(new TimerTask() {

  @Override
  public void run() {

    myLabel.setValue("some value")
    }
 }, 1000 * 4);

这给我带来了错误:

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: queueing rwt runnable from outside scout thread

我理解她,因为你不应该在它的线程之外改变UI。但是现在我很难返回UI线程,因为它不是SWT线程,也不是SWING线程。(Scout是两者的包装器)

如何在Scout中运行Timer,或者如何在Scout中获得UI线程?

马尔科

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 05:06:30

您想要的是在ClientSyncJob中执行UI的更改

代码语言:javascript
复制
new ClientSyncJob("Perform UI Change", ClientSyncJob.getCurrentSession()) {
    @Override
    protected void runVoid(IProgressMonitor monitor) throws Throwable {
        // Your changes for the UI go here
    }
}.schedule();

与往常一样,在处理UI线程时,要小心避免对SyncJob进行不必要的工作。

(当您希望从UI线程启动异步工作时,对应方将是一个ClientAsyncJob。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32064865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档