Matrix1123 2017-04-21 11:47 采纳率: 100%
浏览 4794
已采纳

java在匿名内部类中如何访问外部的变量?

 package 线程优先级;
import java.awt.*;
import javax.swing.*;
public class MyThread extends JFrame {
    static int i=0; 
    private static Thread thread[]=new Thread[4];
    private static JProgressBar pb[]=new JProgressBar[4];
    public MyThread(String title)
     {
         super(title);
         Container container=this.getContentPane();
         container.setLayout(new GridLayout(4,1));
         for(int i=0;i<4;i++)
         {
             pb[i]=new JProgressBar();
             pb[i].setStringPainted(true);
         }
         while(i<4)
         {
             thread[i]=new Thread(new Runnable(){
                 public void run(){
                     int progress=0;
                     while(progress<=100)
                     {
                         try{
                             Thread.sleep(100);
                         }catch(Exception e)
                         {
                             e.printStackTrace();
                         }
                         pb[i].setValue(progress++);   //此处有问题
                     }   
                 }
             }
                     );
                 i++;
         }
           for(int i=0;i<4;i++)
               container.add(pb[i]);
           this.setSize(400,400);
           this.setVisible(true);
           this.setDefaultCloseOperation(EXIT_ON_CLOSE);
           thread[0].setPriority(5);
           thread[1].setPriority(5);
           thread[2].setPriority(4);
           thread[3].setPriority(3);
           i=0;
           while(i<4)
           {
               thread[i].start();
               i++;
           }
     }
           public  static void main(String[] args)
           {
               new MyThread("线程优先级");
           }
}

这段代码由于我在run()方法里设置进度条的数字时用了静态变量,导致在调用线程start()方法的时候里面的进度条只动了一条。如果不用静态变量的话我又不知道怎么在Runnable的匿名内部类中访问外部循环的i,有没有什么办法在匿名内部类中能够访问外部的参数,而且不是常量不是静态变量?

  • 写回答

2条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 有关c++的问题,利用相关知识
      • ¥15 求香农编码和解码的matlab代码
      • ¥20 ROS中的TEB局部规划问题
      • ¥20 关于#matlab#的问题:要求测出上面图片中所有同心圆的半径
      • ¥20 epanet软件运行问题
      • ¥15 Python 文件读取
      • ¥60 dpabi进行Alff计算时脑池有干扰信号
      • ¥15 利用kmeans或kshape聚类分析对归一化的无量纲时间-降雨序列进行聚类
      • ¥15 protel99.SE提示一下弹窗
      • ¥15 银河麒麟v10 执行.run失败如何解决