初学多线程,做练习时发现一个问题解决不了,请英雄解答  呵呵,先谢过了
做了一个窗体,窗体上有一个按钮和一个文本框(text1),我需要按下按钮后计算1加到99999...的结果,并将结果显示在text1上。然后我写了一个类继承Thread,如下
public class MyThread extends Thread{
  public void run(){
    double sum = 0;
    for (int i = 0; i < 99999999; i++) {
      sum = sum + i;
    }
  }
}
我想要把结果显示到text1上时,就写了
text1.setText(" " + sum);
但是这个却不成功,请问如何能在这个线程类中调用窗口类中的text1

解决方案 »

  1.   

    直接把你的LABEL的引用给它不就可以了吗
      

  2.   

    我直接在线和类MyThread里面写text1.setText(" " + sum);   会报错啊
    楼上的帅哥讲详细点吧,谢过
      

  3.   

    public void run(){
        double sum = 0;//sum是run()的局部变量,外部怎么可以直接拿来使用?
        for (int i = 0; i < 99999999; i++) {
          sum = sum + i;
        }
      

  4.   

    就是啊,sum应该定义成实例变量
    还要就是sum非String,在setText的时候要不要进行类型转换啊
    String.valueOf(sum);
      

  5.   

    使用侦听器,当值改变时,通知窗口中的控件去更新内容,这个是AWT本身就有的通知者模式(或者叫MVC)
      

  6.   

    SUM是局部变量吧,如果想在两个线程见通讯要用到管道流来操作