JavaFX TableView更新单元格,不更新对象值
在将列作为文本字段进行编辑并能够编辑和更新单元格内显示的值之后,我注意到每当我试图从tableview中提取更新后的值时,只有旧的原始未编辑值返回给了我-单元格中表示的值似乎不等于从基础模型对象返回的值 要使我的柱可编辑,我使用以下代码:JavaFX TableView更新单元格,不更新对象值,java,javafx,tableview,fxml,Java,Javafx,Tableview,Fxml,在将列作为文本字段进行编辑并能够编辑和更新单元格内显示的值之后,我注意到每当我试图从tableview中提取更新后的值时,只有旧的原始未编辑值返回给了我-单元格中表示的值似乎不等于从基础模型对象返回的值 要使我的柱可编辑,我使用以下代码: ObservableList<TableColumn> colums = search.getColumns(); colums.get(1).setEditable(true); colums.get(1).setCellFactory(Tex
ObservableList<TableColumn> colums = search.getColumns();
colums.get(1).setEditable(true);
colums.get(1).setCellFactory(TextFieldTableCell.<DataPoint>forTableColumn());
colums.get(1).setCellValueFactory(new PropertyValueFactory<DataPoint, String>("No"));
那么,我如何将更新后的值保存在模型对象中/如何提取单元格中显示的值
(我的GUI是一个FXML文档,由Gluon的Scene Builder程序制作)除非
cellValueFactory
返回一个也允许您写入项目的属性,否则您需要使用onEditCommit
事件将值存储在项目中PropertyValueFactory
返回一个不写入项的属性,如果项类中只存在getter和setter,而不存在属性getter
((TableColumn<DataPoint, String>) colums.get(1)).setOnEditCommit(evt -> evt.getRowValue().setNo(evt.getNewValue()));
我试图添加您给我的第一行代码,但我的IDE告诉我它无法解析该方法:“无法解析方法'getRowValue()'”同样适用于“getNewValue”-您知道问题可能是什么吗?可能是因为您使用的是原始类型。如果添加适当的强制类型,则应修复。(请参见编辑)。谢谢,这似乎可以解决我的问题!
DataPoint selectedData = (DataPoint) TableView_Search.getSelectionModel().getSelectedItem();
System.out.println(selectedData.getNo());
((TableColumn<DataPoint, String>) colums.get(1)).setOnEditCommit(evt -> evt.getRowValue().setNo(evt.getNewValue()));
JavaBeanStringPropertyBuilder builder = JavaBeanStringPropertyBuilder.create().beanClass(DataPoint.class).name("no");
colums.get(1).setCellValueFactory(cd -> builder.bean(cd.getValue()).build());