如何在javaFX中第二次单击/选择时取消选择所选的表行

Dil*_*Dil 5 javafx-2 javafx-8

在我的JavaFX表上,当我单击一行时,它会选择该行.现在,当我第二次在先前选择的同一行上单击时,我想取消选择该特定行.可能吗 ?如果可能,请分享一些示例代码.

Dil*_*Dil 11

下面的代码符合此要求.

tableView.setRowFactory(new Callback<TableView<Person>, TableRow<Person>>() {  
        @Override  
        public TableRow<Person> call(TableView<Person> tableView2) {  
            final TableRow<Person> row = new TableRow<>();  
            row.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {  
                @Override  
                public void handle(MouseEvent event) {  
                    final int index = row.getIndex();  
                    if (index >= 0 && index < tableView.getItems().size() && tableView.getSelectionModel().isSelected(index)  ) {
                        tableView.getSelectionModel().clearSelection();
                        event.consume();  
                    }  
                }  
            });  
            return row;  
        }  
    });  
Run Code Online (Sandbox Code Playgroud)

在oracle的表视图示例中使用了相同的Person类.原始答案由@James_D在oracle的论坛中给出.

  • 此实现取消选择所有选定的项目。要仅取消选择一项,请使用“tableView.getSelectionModel().clearSelection(index);” (2认同)