Java 无法对数组类型JButton[]调用checkState()?

Java 无法对数组类型JButton[]调用checkState()?,java,swing,jbutton,actionlistener,Java,Swing,Jbutton,Actionlistener,我已经编写了一个方法checkState(),它接受参数JButton[][],这是一个按钮的二维数组,并返回按钮矩阵的状态。然而,当我试图在ActionPerformed的匿名内部类中调用它时,它显示了这个错误。你能帮我解释一下错误背后的原因吗 import javax.swing.*; import java.awt.event.*; import java.util.*; import java.awt.*; public class PlayGameUU { int moves=0

我已经编写了一个方法checkState(),它接受参数JButton[][],这是一个按钮的二维数组,并返回按钮矩阵的状态。然而,当我试图在ActionPerformed的匿名内部类中调用它时,它显示了这个错误。你能帮我解释一下错误背后的原因吗

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


public class PlayGameUU 
{
int moves=0;
String s;
public PlayGameUU(JButton[][] box)
{
    for (int i=0;i<3;i++)
    {
        for (int j=0;j<3;j++)
        {
            box[i][j].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    while (checkState(box)==0)
                    {

                        if (((JButton)e.getSource()).getText().equals(""))
                        {           
                        if (moves%2==0)
                            {
                            ((JButton)e.getSource()).setText("0");
                            moves++;
                            }
                        else
                            {
                            ((JButton)e.getSource()).setText("X");
                            moves++;
                            }
                        }
                    }
                    if (checkState(box)==1)
                        s="0 wins";


                    else if (checkState(box)==2)
                        s="X wins";
                    else if (checkState(box)==3)
                        s="Tie";
                }});
        }
        }
}



final public int checkState(JButton[][] box)        
//Returns 1 for zero win, 2 for cross win and 3 for draw, 0 otherwise
{
    int flagzerowin=0;
    int flagcrosswin=0;

    for (int row=0;row<3;row++)
    {
    if (box[row][0].getText().equals("X") && box[row]    [1].getText().equals("X") && box[row][2].getText().equals("X"))
        {
        flagcrosswin=1;
        break;
        }
    else if (box[row][0].getText().equals("0") &&box[row][1].getText().equals("0") &&box[row][2].getText().equals("0"))
        {
        flagzerowin=1;
        break;
        }
    }

    for (int col=0;col<3;col++)
    {
    if (box[0][col].getText().equals("X") &&box[1][col].getText().equals("X") &&box[2][col].getText().equals("X"))
        {
        flagcrosswin=1;
        break;
        }   
    else if (box[0][col].getText().equals("0") &&box[1][col].getText().equals("0") &&box[2][col].getText().equals("0"))
        {
        flagzerowin=1;
        break;
        }
    }

    if (box[0][0].getText().equals("X") && box[1][1].getText().equals("X") && box[2][2].getText().equals("X"))
        flagcrosswin=1;

    if (box[0][2].getText().equals("X") && box[1][1].getText().equals("X") && box[2][0].getText().equals("X"))
        flagcrosswin=1;

    if (box[0][0].getText().equals("0") && box[1][1].getText().equals("0") && box[2][2].getText().equals("0"))
        flagzerowin=1;

    if (box[0][2].getText().equals("0") && box[1][1].getText().equals("0") && box[2][0].getText().equals("0"))
        flagzerowin=1;

    if (flagzerowin==1)
        return (1);
    else if (flagcrosswin==1)
        return(2);

    int flagfull=1;
    for (int i=0;i<3;i++)
    {
        for (int j=0;j<3;j++)
        {
            if (box[i][j].getText().equals(""))
                flagfull=0;
        }
    }

    if ((flagzerowin==0)&&(flagcrosswin==0)&&(flagfull==1))
        return(3);          //Draw

    else
        return (0);
    }

    }

除了编译器或运行时错误输出,您忘了添加最重要的内容,即错误日志,post a or。除了编译器或运行时错误输出,您忘了添加最重要的内容,即错误日志,post a or。
    public JButton box[][]=new JButton[3][3];
    public int mode;

    if (mode==1)
    {
        new PlayGameUU(box);
    }