如何在不同的类中操作类中的变量?

时间:2013-12-16 23:29:47

标签: java class

使用Java进行简单的井字游戏。

我有一个名为GameHelpers的班级。该类应包含有用的游戏方法。游戏发生在另一个班级。

GameHelpers中的方法是ResetGame()。此方法应该将所有9个按钮(井字棋盘)上的文本设置为空白,再次启用它们,并将变量设置为1.

这是代码:

public class GameHelpers {

    public void resetGame(){
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
                buttons[i][j].setEnabled(true);
                buttons[i][j].setText("");
                count = 1;
            }
        }
    }

}

buttons[]是游戏主要类TicTacToe中的一组JButton。

此方法以前位于游戏的主要类TicTacToe中。但是现在它处于不同的类中,它无法到达TicTacToe类中的按钮并操纵它们。

我在TicTacToe中创建了get和set方法,但是如何从GameHelpers激活它们?

如何在GameHelpers中使用该方法?

1 个答案:

答案 0 :(得分:4)

您可以获取通过ActionEvent的getSource()方法推送的源按钮。

所以例如:

public void actionPerformed(ActionEvenet e){
     JButton sourceBtn = (JButton) e.getSource();
     String text = sourceBtn.getText().trim(); 
     if (text.isEmpty()) {   // see if x/o assigned yet
       sourceBtn.setText(....);  / "X" or "O" depending on logic
     }
}

这样,所有9个按钮都可以共享完全相同的ActionListener,程序仍然有效。


修改
您在评论中说明:

  

为什么修剪()东西?

我认为你有一个正在进行的井字游戏,如果是这样,你不想在已经显示X或O文本的JButton上添加“X”。如果你给JButton一个空格" "用于文本,trim()将删除任何前导或尾随空格,并将文本更改为"",你就会知道它可以接受新文本,“X”或“O”。如果您不需要它,请不要使用它。