Java swing中数组JPanel[]能否循环绑定监听事件

八年抗战的娃 2013-02-20 01:10:01
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个数组元素都单独绑定了吗?跪求解决!
...全文
231 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
八年抗战的娃 2013-02-20
  • 打赏
  • 举报
回复
谢谢啦,问题是解决了,我再看看
Java_Super_Man 2013-02-20
  • 打赏
  • 举报
回复
可以在new MouseListener() { int id = i; public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { JOptionPane.showMessageDialog(PkView.this, id+"号位置", "单体信息", JOptionPane.DEFAULT_OPTION); } });
Java_Super_Man 2013-02-20
  • 打赏
  • 举报
回复
当你添加完所有的listener之后,i等于panel.length-1; 当然任何panel在触发MouseListener时,其中JOptionPane.showMessageDialog(PkView.this, i+"号位置", "单体信息", JOptionPane.DEFAULT_OPTION);中的i还是获取的private int i。 所以产生了每次都是最后一个现象。 解决办法应该将panel编号单独保存起来。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧