Actionlistener变成一个循环

我已经尝试了好几个小时了,但没有得到任何结果:(如果有明显的错误,敬请原谅..

public void manual(int playerColor, boolean[] sw) {
        for (int i = 0; i < 7 && sw[0] == false; i++) {
            for (int j = 0; j < 6 && sw[0] == false; j++) {
                int iValue = i;
                int jValue = j;
                GBoard[i][j].addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (playerColor == intBoard[iValue][jValue][1]) {
                            intBoard[iValue][jValue][2]++;
                            sw[0] = true;
                        }
                    }
                });
            }
        }
        if (sw[0] == false) {
            manual(playerColor, sw);
        }
    }

由于某种原因,行动听众变成了循环。它应该在sw [0] = true之后结束,但是它继续进行下去。我确定问题出在动作侦听器上。当我单击其中一个按钮时,它确实输入了if语句,但是由于某种原因,它在到达动作侦听器的结尾后仍未完成,并变成了循环。