我在使用javaFX根据来自另一个表的选定索引的某些数据填充tableColumn时遇到了一些麻烦。 表开始为空。 然后我想在用户按下按钮时填写它。 (到现在为止还挺好) 这是按钮控制器的样子:
@FXML
private void handleNextRequest() {
int selectedIndex = headingTable.getSelectionModel().getSelectedIndex();
if (selectedIndex >= 0)
mainApp.updateEntity(headingColumn.getCellData(selectedIndex));
entityTable.setItems(mainApp.getEntity());
}
所以这会从主类中调用一个函数来更新我的可观察列表。 selectedIndex参数用于确定我必须在列表中加载哪些数据(这些数据位于我可以通过Web服务访问的数据库中,因此" api"(工作正常))。 所以这就是这个函数的样子:
public void updateEntity(String header){
try {
this.entity.clear();
int i = 0;
while(header != heading.get(i).getName()){
i++;
}
api.getEntity(new URL(heading.get(i).getURL()), this.entity, primaryStage);
} catch(MalformedURLException e){}
}
到目前为止,一切都很实用。当按下按钮时,正确调用该函数并正确更新可观察列表(实体)。 (检查并重新检查)
然后......热潮。 " setItems"函数(回到按钮控制器)似乎不喜欢我做过的任何事情并抛出NullPointerException。
如果有人能帮我理解这里可能出现的问题,我会很高兴的!
编辑:
这里是我的初始化代码: 我在初始化方法中有这个:
@FXML
private void initialize() {
headingColumn.setCellValueFactory(CellData -> CellData.getValue().nameProperty());
entityColumn.setCellValueFactory(CellData -> CellData.getValue().nameProperty());
showTableDetails(null);
headingTable.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> showTableDetails(newValue));
}
并且entityTable
和entityColumn
都声明正确。
答案 0 :(得分:0)
好吧我明白了。
相当愚蠢的错误,但fxml文件中缺少fx:id="entityTable"
。
谢谢你帮助我实现这个目标!