gpt4 book ai didi

java - 将 ActionListener() 添加到 Java 中的 JButton-Array : compilation error

转载 作者:行者123 更新时间:2023-12-02 00:31:38 25 4
gpt4 key购买 nike

我正处于我的编程生涯的开始:)并为自己设定了编写一个简单的国际象棋程序的目标。我还没有实现任何逻辑。

不幸的是,我通过以下代码收到此错误消息:线程“AWT-EventQueue-0”java.lang.Error中出现异常: Unresolved 编译问题

但是我仍然可以正常启动程序并获取棋盘图案的字段。仅当我按下按钮时,我才会收到上述错误。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Chess extends JFrame {

//Define variables
private JButton[][] buttons = new JButton[8][8];
private Container board;
private int size = 600;

// Main class opens constructor of Chess
public static void main(String[] args) {
new Chess();
}

// constructor
public Chess() {

//initialize the Chessboard
board = getContentPane();
board.setLayout(new GridLayout(8, 8));
setSize(size, size);
setVisible(true);

//Add buttons to the frame
for (int y = 0; y < 8; y++) {
for (int x = 0; x < 8; x++) {
buttons[y][x] = new JButton();
board.add(buttons[y][x]);
buttons[y][x].setBorderPainted(false);

//color buttons in the checkerboard pattern
if ((y + x) % 2 != 0) {
buttons[y][x].setBackground(new Color(201, 166, 113));
} else {
buttons[y][x].setBackground(Color.WHITE);
}

//Add event listener
ActionListener buttonListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
pressedButton(y,x);
}
};
buttons[y][x].addActionListener(buttonListener);

}
}

}

public void pressedButton(int y, int x) {
System.out.println(x + " " + y);
}
}

最佳答案

我快速设置了一个沙箱,并使用 java 版本 11 和语言级别 11 让它工作。

您不能在 ActionListener 内传递 xy

for (int y = 0; y < 8; y++) {
for (int x = 0; x < 8; x++) {
int tx = x;
int ty = y;
buttons[y][x] = new JButton();
board.add(buttons[y][x]);
buttons[y][x].setBorderPainted(false);

//color buttons in the checkerboard pattern
if ((y + x) % 2 != 0) {
buttons[y][x].setBackground(new Color(201, 166, 113));
} else {
buttons[y][x].setBackground(Color.WHITE);
}

//Add event listener
ActionListener buttonListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
pressedButton(ty, tx);
}
};
buttons[y][x].addActionListener(buttonListener);

}
}

注意添加的 txty 使其工作。问候

关于java - 将 ActionListener() 添加到 Java 中的 JButton-Array : compilation error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com