我有一个合理大小的TableView(4000行,3列),它既启用了单元格选择,又启用了多项选择。当我点击第一列中的第一个单元格时,然后按住Shift键并点击最后一列中的最后一个单元格以选择整个表格,我的程序挂起并最终崩溃。Shift +单击以选中JavaFX TableView中的多个单元格
但是,当我使用Ctrl + A选择整个表时,没有问题。另外,如果我禁用单元格选择,所以选择行而不是单元格,也不会挂起。
我想保持单元格选择启用,但悬挂是一个大问题,因为它是直观的用户使用Shift +单击选择大部分数据。我的代码有没有可以改进的地方,以防止挂?
这里的底层数据模型:
public class Person {
private final StringProperty id = new SimpleStringProperty();
private final StringProperty firstName = new SimpleStringProperty();
private final StringProperty lastName = new SimpleStringProperty();
public Person(String id, String firstName, String lastName) {
this.id.set(id);
this.firstName.set(firstName);
this.lastName.set(lastName);
}
public StringProperty idProperty() {
return id;
}
public StringProperty firstNameProperty() {
return firstName;
}
public StringProperty lastNameProperty() {
return lastName;
}
}
而这里的表码:
final TableView<Person> table = new TableView<Person>();
table.setItems(viewModel.personList());
TableColumn<Person, String> idColumn = new TableColumn<Person, String>("ID");
idColumn.setCellValueFactory(new PropertyValueFactory<Person, String>("id"));
TableColumn<Person, String> firstNameColumn = new TableColumn<Person, String>(
"First Name");
firstNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>(
"firstName"));
TableColumn<Person, String> lastNameColumn = new TableColumn<Person, String>(
"Last Name");
lastNameColumn.setCellValueFactory(new PropertyValueFactory<Person, String>(
"lastName"));
table.getColumns().add(idColumn);
table.getColumns().add(firstNameColumn);
table.getColumns().add(lastNameColumn);
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
table.getSelectionModel().setCellSelectionEnabled(true);
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
听起来像什么,应该TableView中的代码加以改进。请在此处提交问题:https://javafx-jira.kenai.com/secure/Dashboard.jspa –
问题提交:https://javafx-jira.kenai.com/browse/RT-33619 –