我的问题与JavaFx中的TableView有关。 JavaFx建议使用Properties来存储将在表中显示的值(SimpleSttringProperty等),如下例所示。
这不是Java的内存开销(为每个单元创建另一个对象)吗? 我将使用TableView从数据库中显示超过10.000行。 有没有办法避免这种情况,只是像Swing之前做的那样工作? TableView不能只获取代表的值吗? 对于所有解决方案,我发现每个单元格都需要一个ObservableValue,这可能需要大量内存。
TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
firstNameCol.setCellValueFactory( element -> element.getValue().firstName );
or
firstNameCol.setCellValueFactory( new PropertyValueFactory<Person, String>("firstName"));
public static class Person {
public final SimpleStringProperty firstName;
private final SimpleStringProperty lastName;
private final SimpleStringProperty email;
private Person(String fName, String lName, String email) {
this.firstName = new SimpleStringProperty(fName);
this.lastName = new SimpleStringProperty(lName);
this.email = new SimpleStringProperty(email);
}
答案 0 :(得分:0)
您不需要在模型中使用属性。这是一个例子
public class Person {
private String firstName;
private String lastName;
private String email;
public Person() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
只需在需要时创建属性。
firstNameCol.setCellValueFactory(cdf -> new SimpleStringProperty(cdf.getValue().getFirstName()));