我正在尝试过渡到使用JavaFX和Swing。我非常喜欢这些桌子以及它们提供的极大简洁性(以及创建出色的建筑师和使用lambdas的包装的潜力)。但是,除了ObservableList和一些GUI行为应用程序之外,我对数据绑定并不十分兴奋。我是不可变性的忠实粉丝,我的应用程序通常会将所有编辑内容编写到数据库中,并在重新拉动编辑后的数据后重新构建对象,而不是直接编辑对象。
遵循Oracle的文档,我使用了ReadOnlyObjectWrapper,它运行得很好。我甚至围绕它建立了一些工厂方法。
firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<Person, String> p) {
return new ReadOnlyObjectWrapper(p.getValue().getFirstName());
}
});
但是,如果我想在不使用数据绑定的情况下使其可编辑,该怎么办?如果我想拦截新编辑的值并将其写入数据库而不是使用绑定属性,该怎么办?我想我得到的是JTable有的老派setValueAt()方法吗?