我正在使用FXML和SceneBuilder进行Tic Tac Toe游戏。到目前为止,我有一个登录UI场景和一个游戏UI场景。在登录场景中,有两个文本区域,两个玩家输入他们的名字和一个开始按钮。按下开始按钮后,我将这些名称存储到一个字符串中,以便稍后使用。我测试了它,这是完美的,我打印了字符串及其输入的字符串。 我通过执行以下操作将它们存储到字符串中:
@FXML
Text player1;
@FXML
Text player2;
@FXML
TextField player1text;
@FXML
TextField player2text;
String player1name;
String player2name;
//ignore above this, I'm just showing my Textfield and text names to avoid confusion
player1name = player1text.getText();
player2name = player2text.getText();
我的问题是切换到游戏场景时。当我按下开始按钮切换时,它切换但不是更新播放器名称,它变成空白,好像字符串(我刚刚初始化)是空的。我玩它试图在新场景中打印字符串,它说字符串是(null)...为什么这样?切换场景时Java是否清除内存?或者是什么?有没有办法解决?先感谢您。我将在下面附上我的代码。
这是我的HandleStartButton函数,它将场景切换到游戏场景,并在登录场景中按下开始按钮时更新字符串:
@FXML
private void handleStartButtonAction(ActionEvent event) throws IOException
{
Stage stage;
Parent root;
//stores words in player1text field and player2text fields in Strings
player1name = player1text.getText();
player2name = player2text.getText();
if (event.getSource() == StartButton)
{
//create new stage
stage = new Stage();
//load up FXML doc where game is
root = FXMLLoader.load(getClass().getResource("GameUI.fxml"));
stage.setScene(new Scene(root));
stage.initModality(Modality.APPLICATION_MODAL);
stage.initOwner(StartButton.getScene().getWindow());
stage.showAndWait();
}
else
{
stage=(Stage) StartButton.getScene().getWindow();
stage.close();
}
}
这是我的Play功能,当按下另一个开始按钮时,它会在游戏场景内启动游戏。这也使得瓦片能够被按下,并且它将球员名称设置为弦乐(这是因为它表示弦乐为空而不起作用)
@FXML
private void play(ActionEvent e)
{
if(e.getSource() == gameButton)
{
//disable start button
gameButton.setDisable(true);
//sets text inside scene builder to strings
player1.setText(player1name)
player2.setText(player2name);
//enable all tic tac toe buttons
TicButton1.setDisable(false);
TicButton2.setDisable(false);
TicButton3.setDisable(false);
TicButton4.setDisable(false);
TicButton5.setDisable(false);
TicButton6.setDisable(false);
TicButton7.setDisable(false);
TicButton8.setDisable(false);
TicButton9.setDisable(false);
//calls playTicTacToe function
playTicTacToe(e);
}
}
最后,我将添加UI在sceneBuilder中的外观截图。任何帮助将非常感谢:)谢谢!