for(final int i=0;i<box.length;i++){            //在匿名内部类要用到for循环中的局部变量,必须用final属性,但i要自增,这时又和final有冲突纠结要怎么解决啊???
box[i].addActionListener(new ActionListener()
{ @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
for(int j=0;j<i;j++){         //这个也是这种问题
if(box[i].isSelected()==true){
box[i+1].setSelected(false);
rbutton[i].setSelected(true);
}
else
bgroup.clearSelection();
}
}
});
在线等待麻烦大家了、、、、、
}

解决方案 »

  1.   

    为什么要加final  不加不可以么
      

  2.   

    for(final int i=0;i<box.length;i++)
    中用普通变量,在外部定义一个成员变量
    在for循环中将int值赋给成员变量,匿名内部类中用成员变量
      

  3.   

    哪有想你这样批量添加 ActionListener 的给你个批量监听的例子,你看看吧import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;public class TestFrame { private JButton[] btns;
    private MyListener listener; public TestFrame() {
    btns = new JButton[10];
    listener = new MyListener();
    for (int i = 0; i < btns.length; i++) {
    btns[i] = new JButton();
    btns[i].addActionListener(listener);
    }
    } class MyListener implements ActionListener { @Override
    public void actionPerformed(ActionEvent e) {
    Object obj = e.getSource();
    for (int i = 0; i < btns.length; i++) {
    if (obj.equals(btns[i])) {
    if (btns[i].isSelected() == true) {
    // ...
    } else {
    // ...
    }
    break;
    }
    }
    } }}
      

  4.   


    public class Test {

    private interface test{
    void print();
    }

    public static void run(test t){
    t.print();
    }

    public static void main(String[] args){
    for(final int[] i = {0};i[0] < 10;i[0]++){
    Test.run(new test(){
    public void print(){
    System.out.println(i[0]);
    }
    });
    }
    }}
    给你写个例子,自己看吧
      

  5.   

    想加颜色,没加上...就是把final int i 换成 final int[] i 的一维数组,所有用i的地方用i[0]代替
      

  6.   

    如果要给多个组件添加监听器,一般采用什么方法啊?是用for()循环吗??