如何获取JButton数组中JButton的索引?

问题描述

我创建了一个带有boardWidth和boardHeight的jButton数组。然后向每个按钮添加一个动作侦听器,当我单击它时,我想对该列中的所有Jbutton进行操作,但是当我对btn调用getX()方法时,它将返回Jframe上按钮的x坐标而不是它在数组上的索引。我想通过为每个按钮定义一个“行”和“列”变量并存储索引然后以这种方式调用来解决此问题,但我想知道是否有一种更简单的方法来实现这一点。

    private void initializeBoard() {
            for(int i = 0; i < boardWidth; i++) {
                for(int j = 0; j < boardHeight; j++) {
                    JButton btn = new JButton();
                    btn.setFont(new Font(Font.SANS_SERIF,Font.BOLD,1));
                    board[i][j] = btn;
                    btn.addActionListener(new ActionListener() {
                        
                        public void actionPerformed(ActionEvent e) {
                            if(((JButton)e.getSource()).getText().equals("") && hasWinner == false && tieGame == false){
                                if (currentPlayer == "RED"){
                                    for (int row = boardWidth - 1; row >= 0; row--) {
                                        if(board[row][btn.getX()].getText().equals("")) {
                                            //do stuff
                                            break;
                                        }}}
                                else {
                                    for (int row = boardWidth - 1; row >= 0; row--) {
                                        if(board[row][btn.getX()].getText().equals("")) {
                                            //do stuff
                                            break;
                                        }}}
                                   }
                                }
                            });
                            pane.add(btn);
                }
            }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...