我想在 TableView 中显示一系列金融交易。每笔交易由日期、描述和金额组成。
如果我使用对另一个问题的回复中显示的示例将所有单元格视为文本,我可以使用绑定来完成这项工作。这允许进行单元格编辑,这是我的目标。
但我无法让它在日期和金额列上工作,我认为我需要为每种单元格类型建立一个单独的单元格工厂,并且可能需要一个单独的 updateItem 方法,但我被卡住了。
任何指向示例或建议的指针都会有所帮助。
您可能需要查看 DataFX 项目: http ://www.javafxdata.org/ ,特别是单元工厂,例如: http://www.javafxdata.org/javadoc/org/javafxdata/control/cell/TextFieldCellFactory。 html
DataFX 包含用于多种数据类型、表格、列表和树视图的自定义单元工厂。例如,假设您的金额具有双精度类型,您可以在 TableColum 的子类中编写类似的内容(将 ??? 替换为代表表中一行的类的类名):
setCellFactory(TextFieldCellFactory.<???, Number>forTableColumn(new Callback<String,Number>(){
@Override
public Number call(String newValueStr) {
double newValue = Double.parseDouble(newValueStr);
return newValue;
}));
setOnEditCommit(new EventHandler<CellEditEvent<???, Number>>() {
@Override
public void handle(CellEditEvent<???, Number> t) {
double newValue = t.getNewValue().doubleValue();
// do something with the double value the user entered here
}
});
}
}
我希望至少能给你一些方向。为了清楚起见,我省略了异常处理。