当前位置: 代码迷 >> J2SE >> 匿名内部类局部变量和for循环变量解决思路
  详细解决方案

匿名内部类局部变量和for循环变量解决思路

热度:139   发布时间:2016-04-24 02:30:07.0
匿名内部类局部变量和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]代替
  相关解决方案