如何在 a 的第一个(或任何其他)项目上触发单击和双击事件javafx.scene.control.ListView
?
我想收到这样的事件:
getListView().setOnMouseClicked(mouseEvent -> {
switch (mouseEvent.getClickCount()) {
case 1:
break;
case 2:
break;
}
});
如何在 a 的第一个(或任何其他)项目上触发单击和双击事件javafx.scene.control.ListView
?
我想收到这样的事件:
getListView().setOnMouseClicked(mouseEvent -> {
switch (mouseEvent.getClickCount()) {
case 1:
break;
case 2:
break;
}
});
好像有什么误会。事件不会在 的项目上触发ListView
,而是在ListCell
显示项目的 s 上触发。ListCell
s 可能是动态构造和重用的,因此可能没有对应于特定项目的事件目标。
如果您掌握了正确的节点,则可以使用以下命令触发事件Event.fireEvent
:
Node target = ...
MouseEvent mouseEvent = new MouseEvent(MouseEvent.MOUSE_CLICKED, ...);
Event.fireEvent(target, mouseEvent);
您还可以使用 s 找到ListCell
s lookupAll
:
Set<Node> listCells = listView.lookupAll(".list-cell");
并使用ListCell.getItem
和ListCell.getIndex
确定正确的。
但是由于事件侦听器已添加到ListView
发现中,因此ListCell
可能不需要正确。