日期:2014-05-20  浏览次数:20842 次

匿名内部类局部变量和for循环变量
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();
}
}
});


在线等待。。。麻烦大家了、、、、、
}

------解决方案--------------------
Java code
for(final int i=0;i<box.length;i++)

------解决方案--------------------
哪有想你这样批量添加 ActionListener 的

给你个批量监听的例子,你看看吧

Java code
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;
                }
            }
        }

    }

}

------解决方案--------------------
Java code

public class Test {
    
    private interface test{
        void print();
    }
    
    public static void run(test t){
        t.print();
    }
    
    public static void main(String[] args){
        for([color=#FF0000]final int[] i = {0};i[0] < 10;i[0]++[/color]){
            Test.run(new test(){
                public void print(){
                    System.out.println([color=#FF0000]i[0][/color]);
                }
            });
        }
    }

}

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