如何使列表视图单元格不能用箭头键遍历?
How to make a listview cells not traversable with arrow keys?
我有一个 ListView,我想禁用箭头键遍历,这样只有 MouseEvent
才能更改所选项目。我打算使用 TraversalEngine
,但它似乎已被弃用。防止遍历的最佳方法是什么?我知道我可以做到 ListView.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>)
,但我不确定如何防止遍历...
我想你可以试试这个:
listView.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
event.consume();
}
});
标记为正确的答案似乎对我不起作用,但我发现使用事件过滤器成功,如下面的简单示例代码所示。
ObservableList<String> items = FXCollections.observableArrayList("foo", "bar");
ListView<String> listView = new ListView<>(items);
listView.addEventFilter(KeyEvent.ANY, Event::consume);
我有一个 ListView,我想禁用箭头键遍历,这样只有 MouseEvent
才能更改所选项目。我打算使用 TraversalEngine
,但它似乎已被弃用。防止遍历的最佳方法是什么?我知道我可以做到 ListView.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>)
,但我不确定如何防止遍历...
我想你可以试试这个:
listView.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
event.consume();
}
});
标记为正确的答案似乎对我不起作用,但我发现使用事件过滤器成功,如下面的简单示例代码所示。
ObservableList<String> items = FXCollections.observableArrayList("foo", "bar");
ListView<String> listView = new ListView<>(items);
listView.addEventFilter(KeyEvent.ANY, Event::consume);