JavaFX 8与JavaFX 20 ListView自动滚动行为差异及原特性消失问题求助
JavaFX 8与JavaFX 20 ListView自动滚动行为差异及原特性消失问题求助
各位好,我遇到个头疼的问题,想请大家帮忙解释下为啥某个好用的特性突然没了。我做了个用ListView展示日志文件数据的应用,逻辑是把输入流里的行数据读进ListView绑定的ObservableList里。
在JavaFX 8里,ListView的垂直滚动条可以用鼠标“钉”在底部——也就是当ListView不断填充数据时,只要我手动把滚动条拖到底部,它就会自动保持在底部位置,能实时看到日志滚动更新,而且我完全没调用过scrollTo之类的方法,体验特别流畅。
最近我把应用移植到了JavaFX 20(选20是因为JavaFX 17的scrollTo方法有bug),代码完全没改,但现在滚动条没法再“钉”在底部自动滚动了!我试了每次插入新条目后调用scrollTo最后一项的方法,但数据量一大,性能就变得特别差。真的不想失去JavaFX 8里那种丝滑的自动滚动体验啊!
下面是我当前使用的代码片段:
try (InputStreamReader reader = (new InputStreamReader(input))) { LineIterator it = IOUtils.lineIterator(reader); while (it.hasNext()) { final String s = it.next(); Platform.runLater(() -> { list.getItems().add(s); list.scrollTo(list.getItems().size()-1); }); } }
备注:内容来源于stack exchange,提问作者dirrio
相关产品推荐
相关产品推荐

