0

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

我想收到这样的事件:

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

1 回答 1

1

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

如果您掌握了正确的节点,则可以使用以下命令触发事件Event.fireEvent

Node target = ...
MouseEvent mouseEvent = new MouseEvent(MouseEvent.MOUSE_CLICKED, ...);
Event.fireEvent(target, mouseEvent);

您还可以使用 s 找到ListCells lookupAll

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

并使用ListCell.getItemListCell.getIndex确定正确的。

但是由于事件侦听器已添加到ListView发现中,因此ListCell可能不需要正确。

于 2016-01-06T15:12:41.363 回答