Java “接收”;错误:';无效';在Tic Tac Toe游戏中检查JButton状态时不允许键入

Java “接收”;错误:';无效';在Tic Tac Toe游戏中检查JButton状态时不允许键入,java,swing,user-interface,jbutton,actionlistener,Java,Swing,User Interface,Jbutton,Actionlistener,我有9个场景制作了一个9条件语句,看看是否所有my JButton都被按下了,并且没有找到赢家,但是它给了我“error:‘void’类型,这里不允许” import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TicTacToe extends JFrame { private final int HEIGHT = 450; private final int WIDTH = 500; pri

我有9个场景制作了一个9条件语句,看看是否所有my JButton都被按下了,并且没有找到赢家,但是它给了我“error:‘void’类型,这里不允许”

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

public class TicTacToe extends JFrame
{
private final int HEIGHT = 450;
private final int WIDTH = 500;
private static JButton [] button = new JButton[9];
private static Action [] playerTurn = new Action[9];
private static JLabel [] label;
private int player = 1;
private Font arial = new Font("Arial", Font.BOLD, 20);
private static int lockButtons = 0;


public TicTacToe ()
{
    setTitle( " tic tak tow ");
    setSize( HEIGHT, WIDTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



    setLayout(new GridLayout(4,3));

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

        button[i] = new JButton( "B" + i + 1);
        playerTurn[i] = new Action();
        add(button[i]);
        button[i].setFont(arial);
        button[i].addActionListener(playerTurn[i]);
    }


    setVisible(true);
}

private class Action implements ActionListener
{
    public void actionPerformed(ActionEvent playerMove)
    {
        //Get button pressed using GetSource Command
        JButton whatPlayer=(JButton)(playerMove.getSource());

            if(player == 1)
            {
                player++;
                whatPlayer.setText("player1");
                whatPlayer.setEnabled(false); 
                validate(); 
                return;
            }               
            if (player == 2)
            {
                player--;
                whatPlayer.setText("player2");
                whatPlayer.setEnabled(false);
                validate(); 
                return;
            }
    }
    public void validate()
    {
        if(button[0].getText().equals(button[1].getText()) && button[1].getText().equals(button[2].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[0].getText());
            gameOver();
        }
        if(button[3].getText().equals(button[4].getText()) && button[4].getText().equals(button[5].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[3].getText());
            gameOver();
        }
        if(button[6].getText().equals(button[7].getText()) && button[7].getText().equals(button[8].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[6].getText());
            gameOver();
        }
        if(button[0].getText().equals(button[3].getText()) && button[3].getText().equals(button[6].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[0].getText());
            gameOver();
        }
        if(button[1].getText().equals(button[4].getText()) && button[4].getText().equals(button[7].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[1].getText());
            gameOver();
        }
        if(button[1].getText().equals(button[4].getText()) && button[4].getText().equals(button[7].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[1].getText());
            gameOver();
        }
        if(button[2].getText().equals(button[5].getText()) && button[5].getText().equals(button[8].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[2].getText());
            gameOver();
        }
        if(button[0].getText().equals(button[4].getText()) && button[4].getText().equals(button[8].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[0].getText());
            gameOver();
        }
        if(button[2].getText().equals(button[4].getText()) && button[4].getText().equals(button[6].getText()))
        {
            JOptionPane.showMessageDialog(null,"Thank you the winner is" + button[2].getText());
            gameOver();
        }
        if ( button.length == setEnabled(false))  // this is the problem.  Don't know if I worded it correctly
        {
            JOptionPane.showMessageDialog(null,"This was a Draw");
        }

    }
    public void gameOver()
    {
        for( int x = 0; x < button.length; x++)
        {
            button[x].setEnabled(false);
        }
    }


}
public static void main(String[] arg)
{
    new TicTacToe();
}   
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类TicTacToe扩展JFrame
{
私人最终内部高度=450;
专用最终整数宽度=500;
私有静态JButton[]按钮=新JButton[9];
私有静态动作[]playerTurn=新动作[9];
专用静态JLabel[]标签;
私人整数玩家=1;
私有字体arial=新字体(“arial”,Font.BOLD,20);
专用静态int锁定按钮=0;
公共交通()
{
片名(“tic tak tow”);
设置尺寸(高度、宽度);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(新网格布局(4,3));
int num=0;
对于(int i=0;i<9;i++)
{
按钮[i]=新的JButton(“B”+i+1);
playerTurn[i]=新动作();
添加(按钮[i]);
按钮[i]。设置字体(arial);
按钮[i].addActionListener(playerTurn[i]);
}
setVisible(真);
}
私有类操作实现ActionListener
{
已执行的公共无效操作(ActionEvent playerMove)
{
//使用GetSource命令按下Get按钮
JButton whatPlayer=(JButton)(playerMove.getSource());
如果(玩家==1)
{
player++;
whatPlayer.setText(“player1”);
whatPlayer.setEnabled(false);
验证();
返回;
}               
如果(玩家==2)
{
玩家--;
whatPlayer.setText(“player2”);
whatPlayer.setEnabled(false);
验证();
返回;
}
}
public void validate()
{
if(按钮[0].getText().equals(按钮[1].getText())&按钮[1].getText().equals(按钮[2].getText()))
{
JOptionPane.showMessageDialog(null,“谢谢您,赢家是”+按钮[0].getText());
gameOver();
}
if(按钮[3].getText().equals(按钮[4].getText())&按钮[4].getText().equals(按钮[5].getText()))
{
showMessageDialog(null,“感谢您,赢家是”+按钮[3].getText());
gameOver();
}
if(按钮[6].getText().equals(按钮[7].getText())&按钮[7].getText().equals(按钮[8].getText()))
{
showMessageDialog(null,“感谢您,赢家是”+按钮[6].getText());
gameOver();
}
if(按钮[0].getText().equals(按钮[3].getText())&按钮[3].getText().equals(按钮[6].getText()))
{
JOptionPane.showMessageDialog(null,“谢谢您,赢家是”+按钮[0].getText());
gameOver();
}
if(按钮[1].getText().equals(按钮[4].getText())&按钮[4].getText().equals(按钮[7].getText()))
{
showMessageDialog(null,“感谢您,获胜者是”+按钮[1].getText());
gameOver();
}
if(按钮[1].getText().equals(按钮[4].getText())&按钮[4].getText().equals(按钮[7].getText()))
{
showMessageDialog(null,“感谢您,获胜者是”+按钮[1].getText());
gameOver();
}
if(按钮[2].getText().equals(按钮[5].getText())&按钮[5].getText().equals(按钮[8].getText()))
{
showMessageDialog(null,“感谢您,获胜者是”+按钮[2].getText());
gameOver();
}
if(按钮[0].getText().equals(按钮[4].getText())&按钮[4].getText().equals(按钮[8].getText()))
{
JOptionPane.showMessageDialog(null,“谢谢您,赢家是”+按钮[0].getText());
gameOver();
}
if(按钮[2].getText().equals(按钮[4].getText())&按钮[4].getText().equals(按钮[6].getText()))
{
showMessageDialog(null,“感谢您,获胜者是”+按钮[2].getText());
gameOver();
}
if(button.length==setEnabled(false))//这就是问题所在。不知道我的措辞是否正确
{
showMessageDialog(null,“这是一个绘图”);
}
}
公众假期
{
用于(int x=0;x
按钮。由于您定义了9个元素的数组,因此长度将等于9

private static JButton [] button = new JButton[9];
如果(button.length==setEnabled(false))if循环中的比较,
setEnabled(false)
将禁用JFrame,返回类型为void,这里比较int和void,这就是编译时抛出错误的原因

int i;

for(i=0;i<button.length;i++){
     if(b[i].isEnabled()){
     break;
     }
}

if(i==button.length){
JOptionPane.showMessageDialog(null,"This was a Draw");
}
inti;

对于(i=0;i你想在这条不可编译的线中测试什么?我想测试我的所有jb按钮是否都被按下。这样,如果所有按钮都被按下,那么游戏就以僵局结束了。好的。所以你想测试所有按钮是否都被按下。如果按钮被按下,那么它就被禁用。你想测试吗所有按钮都已禁用。请为此创建一个方法:
boolean allButtonsDisabled()
。它应该遍历按钮,并在一个按钮仍处于启用状态时立即返回false。最后,如果它没有返回false,则表示所有按钮都已禁用,因此它应该返回true。阅读Java文档后,确定可以使用isEnables函数。但它仍然会给我相同的错误?我是否应该生成布尔值变量??您需要在这个if语句中写入什么逻辑?我想要这样的if(!button.isEnabled()),那么ir是一个绘图。但是,在while循环中,这会更好吗?我编辑了我的po