在我的JavaFX表,当我点击某一行上,它选择行。现在,当我在之前选择的同一行上第二次点击时,我想取消选择该特定行。可能吗 ?如果可能,请分享一些示例代码。如何取消选择在第二次点击/选择选定表行中的JavaFX
5
A
回答
9
下面的代码这一要求工作它调用对象select
。
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;
}
});
从oracle的表视图示例中使用相同的Person类。在oracle的论坛中,@James_D给出了最初的答案。
0
基本上你可以选择任何东西作为索引无效。通常-1
优选
table.getSelectionModel().select(-1);
它调用INT select
。替代方案:
table.getSelectionModel().select(null);
,如果你想看到使用整个代码/确认本
public class Main extends Application {
@SuppressWarnings("unchecked")
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group());
TableView<Person> table = new TableView<Person>();
stage.setTitle("Table View Sample");
stage.setWidth(300);
stage.setHeight(500);
final Label label = new Label("Address Book");
label.setFont(new Font("Arial", 20));
table.setEditable(true);
TableColumn<Person, String> firstNameCol = new TableColumn<Person, String>("Test Name");
firstNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("name"));
table.getColumns().addAll(firstNameCol);
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().addAll(label, table);
table.itemsProperty().get().add(new Person("Hans"));
table.itemsProperty().get().add(new Person("Dieter"));
((Group) scene.getRoot()).getChildren().addAll(vbox);
table.getSelectionModel().select(-1);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
public class Person {
final StringProperty name = new SimpleStringProperty();
Person(String name) {
this.name.set(name);
}
public StringProperty nameProperty() { return this.name; }
}
}
相关问题
- 1. 第二次点击清除/取消选择单选按钮
- 2. jquery第一次点击addClass选择第二次点击removeClass选择
- 3. 点击时选择/取消选择UIButton
- 4. 如何通过点击选择并取消选择一行
- 5. 如何在第二次点击时取消选中自定义单选按钮?
- 6. 点击取消选择之前选择的选项
- 7. 取消选择DataGrid中的选定行
- 8. 上点击单元格,选择/取消选择复选框
- 9. Jquery选择取消选择复选框点击标题
- 10. 第二次点击后取消选中第一个过滤器
- 11. 如何取消选择表单中的单选按钮选择?
- 12. 第一次点击的CSS选择器
- 13. 自定义UITableViewCell中的复选框取消选择行选择
- 14. 选择/取消选择行中的特定复选框
- 15. 在javascript中选择/取消选择复选框单击javascript
- 16. 如何取消选择在目标c中选择的行?
- 17. struts2选择标签,第二次选择基于第一选择的值
- 18. JavaFX如何取消ComboBox选择更改?
- 19. 执行选择器不会第二次取消
- 20. 如何在点击取消时恢复单选按钮选择?
- 21. NSOutlineView选择与第一次点击
- 22. jQuery - 选择表中的第二行?
- 23. jQuery的选择和取消选择多个输入点击
- 24. HTML5日期选择器仅在第二次点击时打开
- 25. 如何在第二个选择框中禁用选择2个js选定值
- 26. 如何取消选择所有选择
- 27. 如何选择和取消选择Android
- 28. 从选择列表中删除选定的选项,点击列表中消失
- 29. 如何取消选择多选中的选定选项?
- 30. 不允许在列表框中取消选择/取消选择
该实现取消选择所有选定的项目。要取消选择只有一个项目,请使用'tableView.getSelectionModel()。clearSelection(index);' – Ravvy