java Tic Tac Toe与GUI
好的,我想用GUI创建一个Tic-Tac-Toe(X-O)游戏,我已经画了它,但不知怎么的,我无法运行它。我知道怎么用。addActionListener,我可以将某个按钮设置为“X”或“O”,但如何使第一个按钮单击时将其设置为X,第二个按钮单击时将其设置为O,依此类推。addActionListener无法正常工作,因为我必须在某个按钮上使用它,但我不知道将按下哪个按钮
这是我写的代码
public class XO {
public static void main(String[] args) {
JFrame myForm=new JFrame("X-O");
myForm.setSize(255, 300);
myForm.setLocation(0, 0);
JButton []buttons=new JButton[10];
int x=40, y=0;
for(int i=0;i<10;i++)
{
if(i%3==0)
{
y+=50; x=40;
}
buttons[i]=new JButton((i+1)+"");
buttons[i].setSize(50, 50);
buttons[i].setLocation(x, y);
myForm.add(buttons[i]);
x+=50;
}
buttons[9].setText("Start Over");
buttons[9].setLocation(80, 205);
buttons[9].setSize(70, 50);
buttons[9].setMargin(new Insets(0, 0, 0, 0));
buttons[0].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buttons[0].setText("X");
buttons[0].setForeground(Color.BLUE);
buttons[0].setFont(new Font("Arial", Font.PLAIN, 30));
buttons[0].setMargin(new Insets(0, 0, 0, 0));
buttons[0].setEnabled(false);
}
});
myForm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myForm.setLayout(null);
myForm.setVisible(true);
}
}
如你所见,我将不得不使用。在特定的按钮上设置ActionListener,但我不知道将按下哪个按钮。我希望你明白我的意思。 提前谢谢
# 1 楼答案
在main方法之外,您可以声明一个静态计数器来确定它是谁的移动:
为循环中的每个按钮添加操作侦听器,并根据计数器确定设置按钮文本的内容。确保在操作侦听器中增加
turnCount
变量:# 2 楼答案
您可以通过
getSource
方法从ActionEvent获取按下的按钮,只需将其转换为JButton即可我将代码主体移动到了
run
方法,并添加了获取播放器和切换播放器的方法