我目前正在制作一个TicTacToe游戏作为个人项目,到目前为止,我知道我几乎完成游戏,除了我必须检查x或o是否相等的部分。线。这是我下面的代码。我的问题在于连接方法,它编译并运行,但是当我尝试在仅按下一个JButton之后添加中间水平行时,它表示该人赢了但不应该是这种情况。我想我需要一个名为isDisabled()的方法,而不是JButton的isEnabled,但出于某种原因我不认为java库中有这样的方法。我确定我是否有isDisabled()它肯定会起作用
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by Usman on 5/17/2016.
*/
public class TicTacToeGUI extends JPanel {
boolean turn = true;
JButton[] board;
public TicTacToeGUI() {
setLayout(new GridLayout(3,3));
board = new JButton[9];
for (int i = 0; i < board.length; i++) {
board[i] = new JButton("");
board[i].setPreferredSize(new Dimension(70, 60));
board[i].setFont(new Font("Arial", Font.PLAIN, 40));
int finalI = i;
board[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(board[finalI].isEnabled()){
if(turn){
board[finalI].setText("X");
turn = !turn;
}
else{
board[finalI].setText("O");
turn = true;
}
board[finalI].setEnabled(false);
}
Connected();
}
});
add(board[i]);
}
}
public void Connected(){
int count =0;
//Horizontal top row
if((board[0].isEnabled() == board[1].isEnabled()) && (board[1].isEnabled() == board[2].isEnabled())){
System.out.println(count++);
for(int i = 0; i < board.length; i++)
board[i].setEnabled(false);
}
}
public static void main(String []args){
TicTacToeGUI game = new TicTacToeGUI();
JFrame frame = new JFrame("Tic Tac Toe");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(game);
frame.pack();
frame.setVisible(true);
}
}
答案 0 :(得分:0)
只需使用(!whatever.isEnabled())
角色&#39;!&#39;类似于Java中的NOT。所以它的行为就像是isDiabled()