如何在 JavaFX ListView 上触发鼠标单击事件?

How to fire mouse click event on a JavaFX ListView?

如何在 javafx.scene.control.ListView 的第一个(或任何其他)项目上触发单击和双击鼠标事件?

我想接收这样的事件:

getListView().setOnMouseClicked(mouseEvent -> {
    switch (mouseEvent.getClickCount()) {
        case 1:
            break;
        case 2:
            break;
    }
});

好像有误会。事件不会在 ListView 的项目上触发,而是在显示这些项目的 ListCell 上触发。 ListCell可以动态构造和重用,因此可能没有对应于特定项目的事件目标。

如果您找到了正确的节点,您可以使用 Event.fireEvent:

触发一个事件
Node target = ...
MouseEvent mouseEvent = new MouseEvent(MouseEvent.MOUSE_CLICKED, ...);
Event.fireEvent(target, mouseEvent);

您还可以使用 lookupAll:

找到 ListCells
Set<Node> listCells = listView.lookupAll(".list-cell");

并使用ListCell.getItem and ListCell.getIndex来确定正确的。

但是由于事件侦听器已添加到 ListView 中,因此可能没有必要找到正确的 ListCell