如何访问一个变量从一个类控制器文件到另一个在JavaFX?



我有一个整数叫做"size"保存到一个名为的控制器类settingsstageconcontroller .java我希望通过另一个控制器类文件gamestagecontroller。java访问该变量但我似乎不知道怎么做。

SettingsStageController.java

/* has the int size variable stored in this file */
int size = 5;
public void startGame(ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("gameStage.fxml"));
root = loader.load();
stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); // ti ston poutso
scene = new Scene(root);
stage.setTitle("DnB: " + Integer.toString(size) + "x" + Integer.toString(size) + " Game");
stage.setScene(scene);
stage.show();
GameStageController gameStageController = loader.getController();
gameStageController.showPane();
}

GameStageController.java

public class GameStageController implements Initializable {


@FXML
Text testText;
@FXML
AnchorPane twoXtwoPane;

@FXML
AnchorPane threeXthreePane;

@FXML
AnchorPane fourXfourPane;

@FXML
AnchorPane fiveXfivePane;


public void showPane() {
switch (/* I WANT TO PUT THE "SIZE" NUMBER HERE" */) {
case 2:
twoXtwoPane.setDisable(false);
twoXtwoPane.setVisible(true);
break;
case 3:
threeXthreePane.setDisable(false);
threeXthreePane.setVisible(true);
break;
case 4:
fourXfourPane.setDisable(false);
fourXfourPane.setVisible(true);
break;
case 5:
fiveXfivePane.setDisable(false);
fiveXfivePane.setVisible(true);
break;
default:
twoXtwoPane.setDisable(false);
twoXtwoPane.setVisible(true);
break;
}
} 
}

如果一个方法需要数据来执行其功能,那么该数据应该是该方法的一个参数。你应该这样做:

public class GameStageController implements Initializable {
// ...
public void showPane(int size) {
switch (size) {
// ...
}
}
}

当然还有

private int size = 5;
public void startGame(ActionEvent event) throws IOException {
// ...
GameStageController gameStageController = loader.getController();
gameStageController.showPane(size);
}

如果您的GameStageController实例稍后需要size变量,您可以在该类中创建一个实例变量,并在showPane方法中将其设置为作为参数传递的值。

你只需要把它设置为static,这样你就可以直接使用类名访问它,如果你的控制器在不同的包中,你需要添加public,因为默认可见性是package。

所以你必须像这样声明size:
public static int size = 5;

访问它:

SettingsStageController.size

相关内容

最新更新