JavaFX / TreeTableView:选择和焦点之间的关系

时间:2017-01-18 16:34:29

标签: javafx focus selection treetable

我需要澄清FocusSelectionjavafx.scene.control.TreeTableView之间的关系。

在我的代码中,我定义了:

ttvMainTree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

假设1:我假设,焦点项始终是左键单击的最后一项。另外我假设左键单击总是移动选择。因此,在SelectionMode.SINGLE中,焦点项和所选项始终相同。

在90%的情况下,这似乎是正确的。无论如何,在一些随机的左键单击后,我的代码产生了这样的图片:

enter image description here

请确认:

  • 具有蓝色背景的项目是所选项目
  • 带有蓝色边框的项目是焦点项目

此处可以通过左键单击更改焦点项目,所选项目似乎不受左键单击的影响。

对于不提供SSCCE而道歉。目前我不知道如何缩短我的代码并重现这种行为。

因此一般性问题:

  • 假设1有什么问题?

2 个答案:

答案 0 :(得分:1)

根据我的拙见,我不认为两者的行为有什么不同,正如你所说,当你选择Node时,它是一种关系,这一个请求焦点。 可以使用“focusTraversable”控制焦点:

  

focusTraversable :指定此节点是否应成为焦点遍历循环的一部分。当此属性为true时,可以使用常规焦点遍历键将焦点移动到此节点并从此节点移动。

对于你的情况,我想也许是因为你选择了TreeTableView同时是孩子和父Child 2

答案 1 :(得分:0)

找到我申请奇怪行为的原因: 选择侦听器导致数据模型的更新。基本上,删除了包含子元素的列表,并使用相同的数据再次填充。这导致了选择模型的混乱。