如何 - Java线程访问其他线程(SWING)

时间:2011-09-10 09:30:07

标签: java multithreading swing

关于这个问题,

当我从主应用程序启动一个线程时,让我们说进程A在后台运行并更新一个文本框,说明它正在运行并在它停止运行时完成。

如何在正在运行的线程中编写更新线程外文本框的代码?

1 个答案:

答案 0 :(得分:3)

你需要一个指向文本框的指针。 线程无法更新文本框 - 在摆动中,必须从事件派发线程执行所有GUI命令。

你必须这样做:

SwingUtilities.invokeLater ( new Runnable(){
    public void run(){
        // draw textbox code
    }
});

这会将对象添加到事件调度线程

执行的队列中

编辑: 只是一个提示: 在新的Runnable(){...}(一个匿名类)中,您将无法使用外部作用域中的常规变量。您必须将变量定义为final,或使用getter获取文本框(或通过某些静态字段对其进行寻址)。