java - 无法找出我的程序中的问题

标签 java swing awt

我在 java 中有一个内置的 tictactoe,但由于某种原因,重置和退出按钮不起作用。我无法解决这个问题。我搜索了其他问题,但无法找出我的代码的问题。该代码位于单独的类中。还有一个主类调用该对象来运行程序。

按钮阵列工作正常。 O 和 X 完全按照我想要的方式工作,但带有重置和退出按钮的第二个面板不起作用。该程序在 GUI 中。

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

public class Frame1 implements ActionListener {

    private JButton[] board;
    private int turn;
    private JButton reset;
    private JButton exit;

    public Frame1() {
        turn = 1;
        JFrame frm = new JFrame("Chess");
        JButton reset = new JButton("Reset");
        JButton exit = new JButton("Exit");
        frm.setSize(300, 300);

        JPanel LowerPanel = new JPanel();
        LowerPanel.add(reset);
        LowerPanel.add(exit);
        exit.addActionListener(this);
        reset.addActionListener(this);
        board = new JButton[9];
        JPanel CenterPanel = new JPanel();
        CenterPanel.setLayout(new GridLayout(3, 3));
        for (int i = 0; i < 9; i++) {
            board[i] = new JButton();
            board[i].setFont(new Font("Arial", Font.BOLD, 72));
            CenterPanel.add(board[i]);
            board[i].addActionListener(this);
        }
        frm.add(CenterPanel, BorderLayout.CENTER);
        frm.add(LowerPanel, BorderLayout.SOUTH);

        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frm.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == reset) {

            for (int i = 0; i > 9; i++) {
                board[i].setText(" ");
                board[i].setEnabled(true);
                turn = 1;
            }

        }
        if (e.getSource() == exit) {
            System.exit(0);

        }

        for (int i = 0; i < 9; i++) {

            if (e.getSource() == board[i]) {
                if (turn == 1) {

                    board[i].setText("X");
                    board[i].setEnabled(false);
                } else {
                    board[i].setText("O");
                    board[i].setEnabled(false);

                }

                turn = (turn + 1) % 2;
                return;

            }

        }

    }

}

我希望按钮能够正常工作。如果你能帮我解决这个问题,那将是一个很大的帮助

最佳答案

看看

        JButton reset = new JButton("Reset");
        JButton exit = new JButton("Exit");

您将按钮分配给局部变量,但在 actionPerformed() 中您正在访问对象属性。

尝试

        reset = new JButton("Reset");
        exit = new JButton("Exit");

关于java - 无法找出我的程序中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883056/

相关文章:

Java - 即使调用方法,JPanel 也不绘制

java - 如何转换和写入大图像而不导致 OOM 错误?

java - JScrollPane 中的 Canvas 仅在滚动条处于最极端点时才重新绘制

java - 将不同对象类型的数组列表合并为一个

java - Java 中是否可以定义任意高度嵌套的数组?

java - 在 EditText 中输入文本时出现 NullPointerException

java - 检测在 Swing 中单击生成的 MouseEvent 上的 Shift 修饰符

java - Repaint() 和 PaintComponent() 未正确更新

java - 不满意的依赖异常 : Error creating bean with name 'HController' caused by NoSuchBeanDefinitionException:

java - 在 Maven 构建之后构建 "live"目录结构的正确方法?