Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFx:在TreeView中,当treeitem不在视图中时,只需滚动到索引编号_Java_Javafx_Javafx 8 - Fatal编程技术网

JavaFx:在TreeView中,当treeitem不在视图中时,只需滚动到索引编号

JavaFx:在TreeView中,当treeitem不在视图中时,只需滚动到索引编号,java,javafx,javafx-8,Java,Javafx,Javafx 8,我需要做一件简单的事。我有一个大的树景。以及“下一个”和“上一个”菜单项。在“下一步”中,我必须选择下一个树项目。树列表如下所示 -Root(set visible hide is true for root) --Parent 1 ----Child 1 ----Child 2 ----Child 3 --Parent 2 ----Child 1 ----Child 2 现在按下下一个或上一个菜单项,我调用 myTreeView.getSelectionModel().clea

我需要做一件简单的事。我有一个大的树景。以及“下一个”和“上一个”菜单项。在“下一步”中,我必须选择下一个树项目。树列表如下所示

-Root(set visible hide is true for root)
 --Parent 1
 ----Child 1
 ----Child 2
 ----Child 3
 --Parent 2
 ----Child 1
 ----Child 2
现在按下下一个或上一个菜单项,我调用

myTreeView.getSelectionModel().clearAndSelect(newIndex);
这样我就可以选择下一个项目

myTreeView.getSelectionModel().scrollTo(newIndex) 
我已设法滚动到选定的树项

问题: 让我手动选择第一项。之后我按下下一步按钮。现在,这会导致一种奇怪的行为,即它总是滚动新选定的树项是在视图中(可查看区域的边界)还是不在视图中。假设我有一个大的树项目列表。我的要求是,我只想滚动发生时,新选定的树项目离开了视线。有谁能建议如何做到这一点


谢谢。

这件简单的事情并不那么简单。这是JavaFX中的一个已知问题;看

根据本期中的评论,我已经用我自己的TreeView实现了它。请注意,正如在问题评论中一样,我依赖JavaFX中的内部类来获得最终结果。不能保证这些内部类将继续存在

首先,创建从内部类派生的新蒙皮(同样:危险):

最后,在
滚动到
之前,使用新方法作为条件:

if (!((FolderTreeViewSkin) myTreeView.getSkin()).isIndexVisible( intThePositionToShow ))
    myTreeView.scrollTo( intThePositionToShow );

这就是我的工作;我希望它能帮助您或其他任何人。

注意:这不能在jre9上运行
myTreeView.setSkin(new FolderTreeViewSkin(myTreeView));
if (!((FolderTreeViewSkin) myTreeView.getSkin()).isIndexVisible( intThePositionToShow ))
    myTreeView.scrollTo( intThePositionToShow );