将参数传递到JavaFXML中的新边框窗格

将参数传递到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

所以,我需要将参数(ID)传递给通过单击TableView打开的新窗口。具体来说,我需要将series Id参数从MainController传递到TvShowsAboutController

我正在从主控制器打开TvShowsAboutController。像这样:

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());

非常感谢您的详细解释。这就解决了。非常感谢您的详细解释。这就解决了问题。