gpt4 book ai didi

java - 单击 JAVA Jbutton 时,有人可以帮我添加文本吗?

转载 作者:行者123 更新时间:2023-11-30 06:29:29 27 4
gpt4 key购买 nike

基本上,它给我一个关于在添加文本之前将“for”循环中的每个按钮声明为最终按钮的问题。当我这样做时,它给了我很多其他错误。有人可以帮我解决这个问题吗?

import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;

public class tictactoe {
public static final int FRAME_WIDTH = 700;
public static final int FRAME_HEIGHT = 200;
public static void main(String[] args)
{
int slots = 9;
JButton[] gameButton = new JButton[9];

JPanel ticTacToeBoard = new JPanel();
ticTacToeBoard.setLayout(new GridLayout(3, 3));
for (int i = 0; i < slots; i++)
{

gameButton[i] = new JButton();
ticTacToeBoard.add(gameButton[i]);

gameButton[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
gameButton[i].setText("x");
}
});
}



JButton clearButtons = new JButton("New Game");
JButton exit = new JButton("Exit");
JPanel rightPanel = new JPanel();
JLabel wonLabel = new JLabel();
rightPanel.setLayout(new GridLayout(1, 3));
rightPanel.add(wonLabel);
rightPanel.add(clearButtons);
rightPanel.add(exit);
JFrame mainFrame = new JFrame();
mainFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
mainFrame.setVisible(true);
mainFrame.setLayout(new GridLayout(1,2));
mainFrame.add(ticTacToeBoard);
mainFrame.add(rightPanel);
}



}

最佳答案

尝试用这个替换 Action 监听器:

gameButton[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
((JButton)e.getSource()).setText("x");
}

关于原始错误:

使用但未使用的任何局部变量、形式方法参数或异常处理程序参数 在内部类中声明的必须声明为final。使用但未使用的任何局部变量 在内部类中声明的必须在内部类的主体之前明确分配(§16) 类(class)。

关于java - 单击 JAVA Jbutton 时,有人可以帮我添加文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496582/

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