Properties Javafx:在GUI中使用choicebox更新单元格不会';行不通
我在使用javafx创建的Tableview中遇到了一个问题。我在选项卡的fxml文件上设置了editTable=“true”,然后在控制器中执行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
@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");
});