我一直试图在胶子CharmListView
上使用听众一段时间。它在我的项目中没有用,所以我决定在FIFTY STATES应用程序上试一试。我添加了以下代码:
charmListView.onMouseClickedProperty().set((MouseEvent event) ->{
Logger.getGlobal().log(Level.INFO, "Pick: {0}", new Object[]{event.getPickResult()});
});
当我启动应用程序时,没有单击会触发MOUSE_CLICKED
事件。当我稍微向下滚动以使列表标题单元格完全停靠时,
CharmListView
仅在点击顶部标题单元格时触发事件。
INFO: Pick: PickResult [node = VBox@49f31558[styleClass=text-box], point = Point3D [x = 133.0, y = 13.0, z = 0.0], distance = 1067.366530964699
列表中的任何其他位置都不会触发其他任何内容来触发事件。
我尝试将相同的侦听器添加到普通ListView
,并且在点击MouseEvent
的任何区域后始终触发ListView
。所以现在我被卡住了,因为我无法设置一个监听器来获取所选项目。
答案 0 :(得分:0)
CharmListView控件主要用于移动应用程序,您可以使用滚动和滑动手势。但这些手势会触发鼠标点击或按下的事件。
如果列表单元格包含一些处理后者的事件处理程序,则滚动工作的唯一方法是使用它们,否则每当滚动列表时,当您开始滚动时,也会处理单元格事件处理程序。
这就是为什么setOnMouseClicked()
如果点击listView就不会触发任何事件的原因。
要访问列表视图选择模型,请参阅此question。