//想利用for循环设置动态按钮,但是i的值总是11
for(int i = 0; i < 10 ; i++ ){
buttons[i].addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e){ buttons[i].setOpaque(true);
buttons[i].setBackground(new Color(0,158,203,255)); }
public void mouseExited(MouseEvent e){
buttons[i].setBackground(new Color(0,0,0,0));
buttons[i].setOpaque(false);

}
});
}想用i循环设置监听器,但是结果出来,i总是一个定值,该怎么办呢?

解决方案 »

  1.   

    不要用数组下标了,你这个下标在循环结束后早就变成11了。用:e.getSource() 就可以得到其事件发生的对象,然后强制类型转换下,就可以用了。
      

  2.   

    不知道你按钮用的是Swing还是AWT的,我按Swing写了:
    public void mouseEntered(MouseEvent e){
      JButton btn = (JButton)e.getSource();
      btn.setOpaque(true);
      btn.setBackground(new Color(0,158,203,255));
    }