Properties Javafx:在GUI中使用choicebox更新单元格不会';行不通

Properties Javafx:在GUI中使用choicebox更新单元格不会';行不通,properties,javafx,tableview,Properties,Javafx,Tableview,我在使用javafx创建的Tableview中遇到了一个问题。我在选项卡的fxml文件上设置了editTable=“true”,然后在控制器中执行 @FXML private TableColumn<ARule,Object> rankCol; 函数Main.getlabelSample()用字符串或整数重新运行此对象 private static final ObservableList<Object> labelSample = FXCollections.obse

我在使用javafx创建的Tableview中遇到了一个问题。我在选项卡的fxml文件上设置了editTable=“true”,然后在控制器中执行

@FXML
private TableColumn<ARule,Object> rankCol;
函数Main.getlabelSample()用字符串或整数重新运行此对象

private static final ObservableList<Object> labelSample = FXCollections.observableArrayList();
private static final ObservableList labelSample=FXCollections.observableAryList();
问题是,在界面中我可以编辑列,它在labelSample列表中显示正确的值,问题是它没有更改ARule对象的值,这通过缺少setOnEditCommit处理程序的调用突出显示。GUI上的值是所选的新值,但表中项目上保存的值是旧值

我还有一个单独的按钮来更改所选行上该列的值,如果触发该按钮,则值将更改为“real”(在GUI和模型上)


代码中可能有什么错误?

在代码行中找到答案:

rankCol.setOnEditCommit(e -> {System.out.println("something happens!");});
出于某种原因,覆盖更新单元格的默认行为,将代码更改为

rankCol.setOnEditCommit(e -> {
        e.getTableView().getItems().get(e.getTablePosition().getRow()).setLabel(e.getNewValue());
        System.out.println("Something happens!");});

解决了这个问题。目前我不知道为什么会发生这种情况。

列的默认编辑提交行为设置为
onEditCommit
属性。如果你打电话

rankCol.setOnEditCommit(...);
然后将此属性设置为其他属性,即删除默认行为

如果要向默认值添加其他行为,请使用
addEventHandler(…)
而不是
setOnEditCommit(…)

rankCol.setOnEditCommit(...);
rankCol.addEventHandler(TableColumn.editCommitEvent(), e -> {
    System.out.println("Something happens");
});