ListView单选选择更改和拖动事件

时间:2015-05-19 16:02:40

标签: javafx javafx-8

我试图了解ListView中属性更改和鼠标事件的排序。

  1. 要检测更改,观察selectedIndex与selectedItem之间是否存在差异?

  2. 要拖放ListView项,在列表视图和每个ListCell之间注册onDrag ..事件有什么区别吗?

  3. 是否存在" onDragDetected"将在选择模型(我观察)更新之前收到事件?

  4. 由于

1 个答案:

答案 0 :(得分:0)

  

为了检测变化,观察之间存在差异   selectedIndex vs selectedItem?

不是真的;我认为这只是一个最方便你使用的问题。

  

拖放ListView项目之间有什么区别   在ListView和每个ListCell上注册onDrag ..事件?

我主张注册ListCell。没有直接的方法来检查ListView上的鼠标事件,然后确定鼠标事件发生在哪个单元格上。你将不得不依赖于所选择的项目,并且这在语义上并不是同一件事。 (例如,你如何处理空单元格上的拖动,这不会改变选择......?)

  

是否存在" onDragDetected"将收到活动   在选择模型(我观察)更新之前?

该实施依赖。我认为当前实现使用mousePressed事件来处理选择(虽然我不确定),所以它应该在检测到拖动之前触发,但你真的想要依赖于未来版本中不会改变的实现?

恕我直言,依靠所选项目在这里感觉不对。它与您想要的语义不同:您实际上想要了解用户点击的项目"而不是"选择了哪个项目"。当然,这两者是相关的,但它们不是一回事,所以在某种程度上,你要引入对选择API的依赖,它应该独立于你试图实现的东西。 。不过,这绝对是一种意见。你的里程可能会有所不同......