Combobox tableView onEditCommit中的Java FX组合框不';行不通

Combobox tableView onEditCommit中的Java FX组合框不';行不通,combobox,event-handling,javafx,tablecolumn,Combobox,Event Handling,Javafx,Tablecolumn,您好,我们尝试在tableView中为组合框使用eventhandler。 但由于某些原因,eventhandler无法启动。经过长时间的搜索,我们仍然没有找到答案,所以我们非常绝望。 这是我们的代码: //ComboBoxes in Tableview @FXML private TableColumn<Presentatie, Dag> dagC; dagC.setCellValueFactory(new PropertyValueFactory<Pr

您好,我们尝试在tableView中为组合框使用eventhandler。 但由于某些原因,eventhandler无法启动。经过长时间的搜索,我们仍然没有找到答案,所以我们非常绝望。 这是我们的代码:

//ComboBoxes in Tableview
   @FXML
    private TableColumn<Presentatie, Dag> dagC;
    dagC.setCellValueFactory(new PropertyValueFactory<Presentatie, Dag>("dag"));
    dagC.setEditable(true);
    dagC.setCellFactory(ComboBoxTableCell.<Presentatie, Dag>forTableColumn(dataD));

    EventHandler<TableColumn.CellEditEvent<Presentatie, Dag>> nameEditHandler = new EventHandler<TableColumn.CellEditEvent<Presentatie, Dag>>() {
        @Override
        public void handle(TableColumn.CellEditEvent<Presentatie, Dag> e) {
            Presentatie p = e.getRowValue();
            Dag newValue = e.getNewValue();
            p.setDag(newValue);
            System.out.println("PLEASE");

        }
    };
    dagC.setOnEditCommit(nameEditHandler);
//Tableview中的组合框
@FXML
私有表列dagC;
dagC.setCellValueFactory(新属性价值工厂(“dag”);
dagC.setEditable(真);
dagC.setCellFactory(ComboBoxTableCell.forTableColumn(dataD));
EventHandler nameEditHandler=新的EventHandler(){
@凌驾
公共无效句柄(TableColumn.celledite){
表示p=e.getRowValue();
Dag newValue=e.getNewValue();
p、 setDag(新值);
系统输出打印号(“请”);
}
};
setOnEditCommit(nameEditHandler);
我们的数据是FXCollections.observableArrayList

我们正在使用场景生成器,这可能是问题所在吗?我们在某个地方读到场景生成器不更新事件处理程序。如果是这样的话,我们需要做些什么才能使代码正常工作?
请帮助我们,我们将不胜感激。

场景生成器不是问题所在。由于某些原因,显示值为
null
的字符串会导致问题。解决方案是将
null
值替换为空的
字符串。

看起来不错。组合框是否按预期显示?请注意,如果您的
presentation
类有一个
public ObjectProperty dagProperty(){…}
方法,那么您的
onEditCommit
处理程序是多余的:
PropertyValueFactory
将负责从单元格项到属性的绑定。