ste*_*eer 4 java javafx javafx-2
我有一个合理大小的TableView(4000行,3列),启用了单元格选择并启用了多个选择.当我单击第一列中的第一个单元格时,然后按住Shift并单击最后一列中的最后一个单元格以选择整个表格,我的程序挂起并最终崩溃.
但是,当我使用Ctrl + A选择整个表时,没有问题.此外,如果我禁用单元格选择,因此选择行而不是单元格,也没有挂起.
我想保持启用单元格选择,但悬挂是一个很大的问题,因为用户可以直观地使用Shift + Click来选择大部分数据.我可以对我的代码进行任何改进以防止挂起吗?
这是基础数据模型:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是表格代码:
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);
Run Code Online (Sandbox Code Playgroud)
tblView.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
tblView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5000 次 |
| 最近记录: |