javaFX填充/更新Tableview

时间:2016-05-17 14:42:31

标签: java model-view-controller javafx tableview

我在使用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));
}

并且entityTableentityColumn都声明正确。

1 个答案:

答案 0 :(得分:0)

好吧我明白了。 相当愚蠢的错误,但fxml文件中缺少fx:id="entityTable"。 谢谢你帮助我实现这个目标!

相关问题