【发布时间】:2015-08-13 15:34:08
【问题描述】:
我在使用 javafx 创建的 Tableview 中遇到问题。我已经在表格的 fxml 文件上设置了 edititable="true",然后在我执行的控制器中
@FXML
private TableColumn<ARule,Object> rankCol;
rankCol.setCellValueFactory(new PropertyValueFactory<ARule, Object>("label")); rankCol.setCellFactory(ChoiceBoxTableCell.forTableColumn(Main.getlabelSample()));
rankCol.setOnEditCommit(e -> {System.out.println("something happens!");});
要在列中创建一个用于更改属性值的选择框。 ARule 有一个属性字段以及 getter 和 setter:
private SimpleObjectProperty label;
public SimpleObjectProperty labelProperty() {
return label;
}
public void setLabel(Object label) {
this.label.set(label);
}
public Object getLabel(){
return this.label.getValue();
}
函数 Main.getlabelSample() 重新运行这个用字符串或整数填充的对象
private static final ObservableList<Object> labelSample = FXCollections.observableArrayList();
问题是在界面中我可以编辑列并且它在 labelSample 列表中显示正确的值,问题是它不会更改 ARule 对象的值,这由缺少的调用突出显示setOnEditCommit 处理程序。 GUI 上的值是新选择的值,但保存在表中项目上的值是旧值。
我还有一个单独的按钮来更改所选行上该列的值,如果我触发该按钮,“真实”的值会更改(在 GUI 和模型上)。
代码中的错误可能是什么?
【问题讨论】:
标签: properties javafx tableview