如何在javafx.scene.control.ListView
的第一个(或任何其他)项目上触发单击和双击鼠标事件?
我想收到这样的事件:
getListView().setOnMouseClicked(mouseEvent -> {
switch (mouseEvent.getClickCount()) {
case 1:
break;
case 2:
break;
}
});
答案 0 :(得分:1)
似乎存在误解。事件不会在ListView
的项目上触发,而是在显示项目的ListCell
上触发。 ListCell
可以动态构造并重用,因此可能没有与特定项目相对应的事件目标。
如果您使用了正确的节点,则可以使用Event.fireEvent
触发事件:
Node target = ...
MouseEvent mouseEvent = new MouseEvent(MouseEvent.MOUSE_CLICKED, ...);
Event.fireEvent(target, mouseEvent);
您还可以使用lookupAll
找到ListCell
:
Set<Node> listCells = listView.lookupAll(".list-cell");
并使用ListCell.getItem
和ListCell.getIndex
来确定正确的。
但是,由于事件监听器被添加到ListView
,因此可能没有必要找到正确的ListCell
。