我正在修补TableView以找出处理它的好方法。现在我正在使用PropertyValueFactory来填充表格,将TextFieldTableCell.forTableColumn()用作CellFactory。
我的问题:我可以编辑单元格,但更改不会存储在任何地方。即使只是对表进行排序也会将值还原。如何让它将值重新放入例如ModelStringProperty在模型类中?如果它避免了大量的样板代码,则可以获得奖励。
答案 0 :(得分:0)
只要您的模型对象正确公开属性,它就可以正常工作。即你应该有一个结构为
的模型类import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class Person {
private final StringProperty firstName = new SimpleStringProperty(this, "firstName");
public final String getFirstName() {
return firstName.get();
}
public final void setFirstName(String firstName) {
this.firstName.set(firstName);
}
public StringProperty firstNameProperty() {
return firstName ;
}
private final StringProperty lastName = new SimpleStringProperty(this, "lastName");
public final String getLastName() {
return lastName.get();
}
public final void setLastName(String lastName) {
this.lastName.set(lastName);
}
public StringProperty lastNameProperty() {
return lastName ;
}
public Person(String firstName, String lastName) {
this.setFirstName(firstName);
this.setLastName(lastName);
}
}
然后你就可以了
TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));
// In Java 8, I prefer:
// firstNameCol.setCellValueFactory(data -> data.getValue().firstNameProperty());
firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());