我已经结束创建Tic tac toe
游戏的工作,但是在禁用JButton
时遇到了问题。
在 isThisTheEnd 方法识别出游戏应该结束之后,我打算禁用所有按钮,但是无法在初始化之外进行操作。 有办法做到这一点,还有为什么可以为textField设置setText但不能设置setEnabled吗?
public void isThisTheEnd()
{
//vertical
for(int i=0;i<3;i++)
if(board[0][i]==board[1][i] && board[1][i]==board[2][i])
textEnd.setText((turn==1?"X":"O") + " wins!");
//horizontal
for(int i=0;i<3;i++)
if(board[i][0]==board[i][1] && board[i][1]==board[i][2])
textEnd.setText((turn==1?"X":"O") + " wins!");
//diagonal
if((board[0][0]==board[1][1] && board[1][1]==board[2][2]) || (board[2][0]==board[1][1] && board[1][1]==board[0][2]))
textEnd.setText((turn==1?"X":"O") + " wins!");
else
nextTurn();
}
private void initialize() {
btn1.setBackground(UIManager.getColor("Button.disabledForeground"));
btn1.setBounds(36, 86, 120, 120);
window.getContentPane().add(btn1);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn1.setBorder(new LineBorder(Color.WHITE));
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
btn1.setText((turn==1?"X":"O"));
board[0][0]=turn;
isThisTheEnd();
btn1.setEnabled(false);
}
});
}
答案 0 :(得分:0)
//编辑: 问题是,变量是在一个函数内定义的,不能在另一个函数中使用,请参见此答案下方的注释。
这是旧的解决方案,在这种情况下与问题无关:
尝试一下:
SwingUtilities.invokeLater(() -> {
// Disable buttons here
});