我想在TableView
中多选一行。问题是我的应用程序是多点触控应用程序,我没有键盘,所以不是 CTRL 键。
我的代码如下:
tableViewArticle.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
但我只想用鼠标点击选择很多行。例如,当我选择一行时,行会变为蓝色,如果在我选择另一行后,我有两行蓝色。
答案 0 :(得分:2)
如果表格行发生了点击,您可以为处理选择的TableView
使用自定义事件过滤器:
tableViewArticle.addEventFilter(MouseEvent.MOUSE_PRESSED, evt -> {
Node node = evt.getPickResult().getIntersectedNode();
// go up from the target node until a row is found or it's clear the
// target node wasn't a node.
while (node != null && node != tableViewArticle && !(node instanceof TableRow)) {
node = node.getParent();
}
// if is part of a row or the row,
// handle event instead of using standard handling
if (node instanceof TableRow) {
// prevent further handling
evt.consume();
TableRow row = (TableRow) node;
TableView tv = row.getTableView();
// focus the tableview
tv.requestFocus();
if (!row.isEmpty()) {
// handle selection for non-empty nodes
int index = row.getIndex();
if (row.isSelected()) {
tv.getSelectionModel().clearSelection(index);
} else {
tv.getSelectionModel().select(index);
}
}
}
});
如果您希望以不同于鼠标事件的方式处理触摸事件,您还可以使用MouseEvent.isSynthesized
检查事件是否为触摸事件。