Java 如何在运行时引导FXML文件?
我有一个动态填充标题窗格的手风琴窗格。每个标题板都需要有一个子主播板来显示该对象的相关信息。子AnchorPane保存在单独的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&
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()的窗格名称。添加(页面);