You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取触发actionPerformed方法的JButton在ArrayList中的索引?

解决方法

你需要通过ActionEvent的getSource()方法获取被点击的按钮对象,再用这个对象去ArrayList里查找索引——之前用this是错的,因为this指向的是当前Game类的实例,不是被点击的按钮。

修正后的代码如下:

public class Game implements ActionListener {
    // 确保buttons是类的成员变量且已正确初始化
    private ArrayList<JButton> buttons;

    @Override
    public void actionPerformed(ActionEvent event) {
        // 获取触发事件的按钮对象
        JButton clickedButton = (JButton) event.getSource();
        // 在列表中查找该按钮的索引
        int temp = buttons.indexOf(clickedButton);
        
        // 可选:处理按钮不在列表中的情况(此时indexOf返回-1)
        if (temp != -1) {
            // 这里编写拿到索引后的业务逻辑
        }
    }
}

关键点说明

  • event.getSource()会返回触发当前事件的组件实例,这里就是被点击的JButton,强制类型转换后就能拿到目标按钮。
  • buttons.indexOf(clickedButton)会返回按钮在ArrayList中的位置,若按钮不在列表内会返回-1,建议添加判断避免后续逻辑出错。
  • 要保证buttons变量已正确初始化(比如在构造方法中创建列表并添加按钮),否则会触发空指针异常。

内容的提问来源于stack exchange,提问作者Jonah Koch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:35:23