有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将ActionListeners添加到按钮数组中

我正在尝试编写我的第一个Swing应用程序,它是一个简单的Java国际象棋引擎。我已经制作了一个网格的按钮来代表正方形。看起来不错,但我在尝试向每个方块添加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) 个答案

  1. # 1 楼答案

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

    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);
                }
            });
        }
    }