gpt4 book ai didi

java - 如何从处理程序中引用对象

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:13 27 4
gpt4 key购买 nike

所以我有一个鼠标监听器,它附加到多个对象,如下所示:

for (int i = 0; i < Grids.size(); i++) {
Grids.get(i).addMouseListener(new GameMouseListener());
}

现在我遇到的问题是我需要知道哪个对象激活了处理程序

显然这不起作用,因为 var“i” 没有在类内部定义,并且仅在前面的 for 循环中使用。如何使用处理程序知道哪个特定对象已被单击。

 public class GameMouseListener implements MouseListener {

@Override
public void mouseClicked(MouseEvent e) {
if (Grid.get(i).isSelected()) {

Grid.get(i).unselected();
} else {

Grid.get(i).selected();
}
}

@Override
public void mousePressed(MouseEvent e) {
}

@Override
public void mouseReleased(MouseEvent e) {
}

@Override
public void mouseEntered(MouseEvent e) {
}

@Override
public void mouseExited(MouseEvent e) {
}

最佳答案

您可以使用e.getSource()获取事件的来源。

此外,请考虑使用ActionListener可能的话(如果用户可以使用键盘进行选择)。

还有一件事 - 如果监听器是通用的,您可能只创建它的一个实例,而不是为每个组件创建新实例:

GameMouseListener listener = new GameMouseListener();
for (int i = 0; i < Grids.size(); i++) {
Grids.get(i).addMouseListener(listener);
}

关于java - 如何从处理程序中引用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6089660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com