java无法对数组类型JButton[]调用checkState()?
我已经编写了一个方法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);
}
}
下面是调用PlayGameUU构造函数的代码:
public JButton box[][]=new JButton[3][3];
public int mode;
if (mode==1)
{
new PlayGameUU(box);
}
共 (0) 个答案