作者:取个名字忒难le | 来源:互联网 | 2023-05-22 22:29
1> eckig..:
我没有看到你的FXML文件,但是根据你的命名,我猜你的控制器方法private void listViewMouseDoubleClicked(MouseEvent e)
会在你ListView
被点击时被触发.
只要用户点击该区域中的任何位置,就会触发此事件ListView
.你想要的是删除该onMouseClicked
处理程序并将该代码移动到您的ListCell
渲染器.
如果仅将鼠标侦听器附加到非空单元格,则只有ListCell
在单击时才会触发代码.
例如:
public static class MouseClickListCell extends ListCell
{
@Override
protected void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if(empty) {
setText(null);
setOnMouseClicked(null);
}
else {
setText(item.toString());
setOnMouseClicked(ev -> doMagic());
}
}
}