Shift +单击以选择JavaFX TableView中的多个单元格挂起

时间:2013-10-14 22:22:19

标签: java javafx-2 javafx

我有一个合理大小的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;
   }
}

这是表格代码:

  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);

0 个答案:

没有答案