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

Java swing中数组JPanel[]能否循环绑定监听事件
private ImagePanel[]  panel = new ImagePanel[20];
private int i=0;
for(;i<panel.length;i++){
panel[i].addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(PkView.this, i+"号位置", "单体信息", JOptionPane.DEFAULT_OPTION);
}
});
}
这样输出的位置始终是最后一个,我只能把20个数组元素都单独绑定了吗?跪求解决!
java swing 循环 数组 监听

------解决方案--------------------
当你添加完所有的listener之后,i等于panel.length-1;
当然任何panel在触发MouseListener时,其中JOptionPane.showMessageDialog(PkView.this, i+"号位置", "单体信息", JOptionPane.DEFAULT_OPTION);中的i还是获取的private int i。
所以产生了每次都是最后一个现象。

解决办法应该将panel编号单独保存起来。