如何使列表视图单元格不能用箭头键遍历?

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