因此,我对Java和JavaFX还是相当陌生,并且遇到了一个不确定的最佳解决方案的问题。
public void goToDestination(String destination, String username, Privilege privilege) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("../../resources/fxml/" + destination + ".fxml"));
Parent root = loader.load();
SomeController controller = loader.getController();
controller.setUsername(username);
controller.setPrivilege(privilege);
stage.setTitle("Yuconz System");
stage.setScene(new Scene(root));
stage.setMaximized(true);
stage.show();
}
我的问题是,在设置控制器变量时,我不知道它将是哪个控制器。我尝试使用泛型,但随后无法访问该对象的方法。如果有人可以帮助我了解解决此问题的最佳方法,我将不胜感激。
答案 0 :(得分:0)
为包含set方法的控制器创建父类或接口,而不是在所有控制器中都包含它们。然后您可以使用类型ParentController。
public void goToDestination(String destination, String username, Privilege privilege) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("../../resources/fxml/" + destination + ".fxml"));
Parent root = loader.load();
ParentController controller = loader.getController();
controller.setUsername(username);
controller.setPrivilege(privilege);
stage.setTitle("Yuconz System");
stage.setScene(new Scene(root));
stage.setMaximized(true);
stage.show();
}