Java 如何在运行时引导FXML文件?

Java 如何在运行时引导FXML文件?,java,javafx,fxml,Java,Javafx,Fxml,我有一个动态填充标题窗格的手风琴窗格。每个标题板都需要有一个子主播板来显示该对象的相关信息。子AnchorPane保存在单独的FXML文件中,需要在标题窗格展开时加载 这是我尝试使用的控制器: public class PeopleViewController { DataSource data; @FXML private Accordion accordion; @FXML private AnchorPane detailAnchor; @FXML private TableView&

我有一个动态填充标题窗格的手风琴窗格。每个标题板都需要有一个子主播板来显示该对象的相关信息。子AnchorPane保存在单独的FXML文件中,需要在标题窗格展开时加载

这是我尝试使用的控制器:

public class PeopleViewController {

DataSource data;

@FXML
private Accordion accordion;
@FXML
private AnchorPane detailAnchor;
@FXML
private TableView<HashMap<String, String>> dataTable;
@FXML
private TableColumn<HashMap<String, String>,String> propertyiesColumn;
@FXML
private TableColumn<HashMap<String, String>,String> detailsColumn;

public ScheduleViewController(){
    data = new DataSource();
}


@FXML
private void initialize() {
    ObservableList<String> nameList = FXCollections.observableArrayList(dataSource.getNames()); 
    for(String name:nameList){
        accordion.getPanes().add(buildTitledPane(name));
    }
    accordion.setVisible(true);
}

private TitledPane buildTitledPane(final String text){
    final TitledPane tp = new TitledPane();
    tp.setText(text);
    tp.expandedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(
                ObservableValue<? extends Boolean> observable,
                Boolean oldValue, Boolean newValue) {
            if(tp.isExpanded()){
            getPersonData(tp);
            }
        }
    });
    return tp;
}


@FXML
private void getPersonData(TitledPane tp){
    try {
        detailAnchor = FXMLLoader.load(getClass().getResource("PersonDetail.fxml"));
    } catch (IOException e) {
        e.printStackTrace();
    }
    //Will add data to the table here
    tp.setContent(detailAnchor);
}
公共类PeopleViewController{
数据源数据;
@FXML
私人手风琴;
@FXML
私人主播;
@FXML
私有表视图数据表;
@FXML
私有TableColumn PropertyIsColumn;
@FXML
私有表列详细信息列;
公共ScheduleViewController(){
数据=新数据源();
}
@FXML
私有void初始化(){
ObservableList nameList=FXCollections.observableArrayList(dataSource.getNames());
用于(字符串名称:名称列表){
accordion.getPanes().add(buildTitledPane(名称));
}
手风琴。设置可见(真);
}
私有标题窗格BuildTitlePane(最终字符串文本){
最终标题窗格tp=新标题窗格();
tp.setText(文本);
tp.expandedProperty().addListener(新的ChangeListener()){
@凌驾
更改公众假期(

Observalevalue请包含完整的错误消息+堆栈跟踪。请确保在代码中标记堆栈内跟踪的相关行。如果存在,我们可能需要PersonDetail.fxml文件和PersonDetail.fxml的控制器类(但仅当堆栈跟踪提到它时)。这可能是工作
AnchorPane page=(AnchorPane)fxmlLoader.load(url.openStream());detailPane.getChildren().clear();///要放置fxml detailPane.getChildren()的窗格名称。添加(页面);