在TreeView中设置选定的TreeItem

我有一个位于GridPane内的TreeView。 某个function要求用户选择TreeItem并单击屏幕上的按钮。 完成与按钮关联的function后,我希望焦点返回到先前在TreeView中选择的TreeItem。

在按钮操作结束时,我有:

TreeItem selectedItem = [TreeItem that was last selected]

如何将焦点重新放回TreeView并突出显示selectedItem

TreeView或TreeItem都没有我可以使用的setSelected方法。

要选择一个项目:

 TreeView treeView = ... ; // initialize this TreeItem treeItem = ... ; // initialize this, too MultipleSelectionModel msm = treeView.getSelectionModel(); // This line is the not-so-clearly documented magic. int row = treeView.getRow( treeItem ); // Now the row can be selected. msm.select( row ); 

也就是说,从treeView获取treeItem ,然后将该传递给treeView的选择模型。

除此之外,可以改进TreeView API以委托单个树项:

 treeView.select( treeItem ); 

不幸的是,不存在这样的方法。

我认为TreeView.getSelectionModel()是你的朋友。

它提供:

  • getSelectedItem和
  • setSelectedItem