将参数传递到JavaFXML中的新边框窗格
所以,我需要将参数(ID)传递给通过单击TableView打开的新窗口。具体来说,我需要将series Id参数从MainController传递到TvShowsAboutController 我正在从主控制器打开TvShowsAboutController。像这样:将参数传递到JavaFXML中的新边框窗格,javafx,arguments,fxml,Javafx,Arguments,Fxml,所以,我需要将参数(ID)传递给通过单击TableView打开的新窗口。具体来说,我需要将series Id参数从MainController传递到TvShowsAboutController 我正在从主控制器打开TvShowsAboutController。像这样: public void showSeriesInfo() { try { BorderPane tvShows = (BorderPane) FXMLLoader.load(getClass().ge
public void showSeriesInfo() {
try {
BorderPane tvShows = (BorderPane) FXMLLoader.load(getClass().getResource("/seriesapp/javafx/tvShowAbout.fxml"));
setCenterPane(tvShows);
} catch (Exception e) {
e.printStackTrace();
}
}
但我不知道如何在TvShowsAvoutController类中传递参数。若我创建了新的TvShowsAboutController类,那个么它会崩溃,因为它并没有加载FXML文件。我在StackOverflow上看到了类似的问题,但没有多大帮助。我试过这个,但运气不好:
主控制器类
public void showSeriesInfo() {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/javafx/tvShowAbout.fxml"));
TvShowAboutController controller =
loader.<TvShowAboutController>getController();
controller.initData(showsTable.getSelectionModel().getSelectedItem().getShowid());
BorderPane tvShows = (BorderPane) loader.load();
setCenterPane(tvShows);
} catch (Exception e) {
e.printStackTrace();
}
}
@FXML
public void initialize(){
showSeriesInfo();
}
void initData(Integer showId) {
this.seriesId = showId;
}
另外,打开新窗格是这样工作的,但正如我所说的,我不知道如何传递参数,
FXMLLoader
,默认情况下,会创建FXML文件中指定的控制器类的实例。因此,控制器只有在加载FXML文件后才能使用。因此,您需要更改方法调用的顺序:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/javafx/tvShowAbout.fxml"));
BorderPane tvShows = (BorderPane) loader.load();
TvShowAboutController controller =
loader.<TvShowAboutController>getController();
controller.initData(showsTable.getSelectionModel().getSelectedItem().getShowid());
默认情况下,
fxmloader
创建在FXML文件中指定的控制器类的实例。因此,控制器只有在加载FXML文件后才能使用。因此,您需要更改方法调用的顺序:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/javafx/tvShowAbout.fxml"));
BorderPane tvShows = (BorderPane) loader.load();
TvShowAboutController controller =
loader.<TvShowAboutController>getController();
controller.initData(showsTable.getSelectionModel().getSelectedItem().getShowid());
非常感谢您的详细解释。这就解决了。非常感谢您的详细解释。这就解决了问题。