You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:58:11