将ActionListeners添加到按钮数组

时间:2015-04-29 15:57:47

标签: java arrays swing actionlistener chess

我试图编写我的第一个Swing应用程序,它是Java中的一个简单的国际象棋引擎。我制作了一个JButtons网格来表示正方形。看起来不错,但在尝试将ActionListeners添加到每个方块时,我遇到了一个问题。我希望获得正方形坐标,并在点击时将其打印到控制台。这就是我尝试过的(我想我不太了解ActionListeners的工作方式):

// chessBoardSquares[][] is an 8x8 array of Jbuttons

for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {

            chessBoardSquares[i][j].addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {

                    System.out.println("x: "+i+"y: "+j);

                }

            });
        }
    }

1 个答案:

答案 0 :(得分:3)

您需要在匿名内部类中使用字段或最终局部变量。

for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
        final int finalI = i;
        final int finalJ = j;

        chessBoardSquares[i][j].addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("x: " + finalI +"y: " + finalJ);
            }
        });
    }
}