如何在 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
:
找到 ListCell
s
Set<Node> listCells = listView.lookupAll(".list-cell");
并使用ListCell.getItem
and ListCell.getIndex
来确定正确的。
但是由于事件侦听器已添加到 ListView
中,因此可能没有必要找到正确的 ListCell
。
如何在 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
:
ListCell
s
Set<Node> listCells = listView.lookupAll(".list-cell");
并使用ListCell.getItem
and ListCell.getIndex
来确定正确的。
但是由于事件侦听器已添加到 ListView
中,因此可能没有必要找到正确的 ListCell
。