我创建了一个tableView。但它的setCellValueFactory方法调用了两次或更多次。它会导致错误。这可能是什么原因?下面是我的人员和控制器类。
Person.java
public class Person {
private final SimpleStringProperty name;
private final SimpleStringProperty surname;
private final SimpleStringProperty job;
private final BooleanProperty isSelected;
public Person(SimpleStringProperty name, SimpleStringProperty surname, SimpleStringProperty job,
BooleanProperty isSelected) {
super();
this.name = name;
this.surname = surname;
this.job = job;
this.isSelected = isSelected;
}
public SimpleStringProperty getName() {
return name;
}
public SimpleStringProperty getSurname() {
return surname;
}
public SimpleStringProperty getJob() {
return job;
}
public BooleanProperty getIsSelected() {
return isSelected;
}
}
Controller.java
public class Controller {
@FXML
private final TableView<Person> fxPersonTableView;
@FXML
private final TableColumn<Person, Boolean> fxSelectColumnCheckbox;
@FXML
private final TableColumn<Person, String> fxNameTableColumn;
@FXML
private final TableColumn<Person, String> fxSurnameTableColumn;
@FXML
private final TableColumn<Person, String> fxJobTableColumn;
List<Person> persons;
private void createTableView(){
fxSelectColumnCheckbox.setCellFactory(CheckBoxTableCell.forTableColumn(fxSelectColumnCheckbox));
//fxSelectColumnCheckbox.setCellValueFactory(c -> c.getValue().getIsSelected()); I'm using this, but for print wrote below
fxSelectColumnCheckbox.setCellValueFactory(c -> {
System.out.println("METHOD: fxSelectColumnCheckbox.setCellValueFactory"); // This is printed two or more times.
return c.getValue().getIsSelected());
});
fxNameTableColumn.setCellValueFactory(c -> persons.get(c).getName());
fxSurnameTableColumn.setCellValueFactory(c -> persons.get(c).getSurname());
fxJobTableColumn.setCellValueFactory(c -> persons.get(c).getJob());
fxPersonTableView.getSelectionModel.setSleectionMode(SelectionMode.MULTIPLE);
fxPersonTableView.setItems(persons);
}
}