很明显,你只要看这个出错信息,你应该就能知道如何来修改你的index和text这两个变量了。
你只需要将其声明为final类型就可以了,因为你在setStatusAt方法中使用了一个本地匿名内部类,而本地匿名内部类只可以访问方法中final类型的变量,除此之外也还可以访问封装类中的所有方法和变量。
就这么简单!!!

解决方案 »

  1.   

    你可以这样:
    SwingUtilities.invokeLater(text. new Runnable() {       public void run()
         {
              temp();
          }});private void temp() {
       ((JLabel)labelVector.get(index)).setText(text);}
      

  2.   

    匿名内部类不能访问外部函数中的非final变量和参数。
      

  3.   

    请问yuanmeng163:
    text. new Runnable是什么?我在书里讲线程的时候没有见过这样用的???
    但是看过一些实例程序有这样用,看不懂,能详细解释一下吗???
      

  4.   

    如果程序为:
    public void setStatusAt(int index, String text)
        {
            SwingUtilities.invokeLater(text. new Runnable() {            public void run()
                {
                    ((JLabel)labelVector.get(index)).setText(text);
                }        });
        }
    这时则报错:
    package and class have same name:java lang.String at line 27,column46
    class Runnable not found in class java.lang.String at line27,column 46
    如何解决呀?????
      

  5.   

    public void setStatusAt(int index, String text)
        {
            SwingUtilities.invokeLater(new Runnable() {//去掉text.            public void run()
                {
                    ((JLabel)labelVector.get(index)).setText(text);
                }        });
        }