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

如何让JavaFX ListView高度铺满父容器,仅保留ScrollPane滚动条?

解决方案:让ListView撑满父容器并仅保留外层ScrollPane的滚动条

当然可以实现这个需求!核心思路就是让ListView自动扩展高度以显示所有条目,同时让它完全填充父容器VBox的可用空间,这样当内容过多时,就会触发外层ScrollPane的滚动,而ListView自身的滚动条会自动消失。

直接修改你的FXML布局即可,调整后的代码如下:

<ScrollPane fx:controller="sample.Controller" xmlns:fx="http://javafx.com/fxml">
    <VBox fillWidth="true">
        <Label text="Hello"/>
        <Label text="Expand listview"/>
        <ListView fx:id="listViewTest" 
                  VBox.vgrow="ALWAYS" 
                  prefHeight="Infinity" 
                  fitToWidth="true"/>
    </VBox>
</ScrollPane>

关键属性解释:

  • VBox.fillWidth="true":让VBox的所有子元素自动填充容器的宽度,避免ListView出现左右空白。
  • ListView.VBox.vgrow="ALWAYS":告诉VBox,ListView需要占用容器中所有剩余的垂直空间,而不是保持默认的固定高度。
  • ListView.prefHeight="Infinity":设置ListView的首选高度为无限大,这样它会根据条目数量自动扩展高度,直到能完整显示所有内容,不会触发自身的滚动条。
  • ListView.fitToWidth="true":确保ListView的宽度完全匹配父容器,避免出现不必要的水平滚动。

这样调整后,当ListView中的条目较少时,它会保持合适的高度;当条目数量增多时,ListView会自动拉长以显示所有内容,此时整个VBox的高度会超过外层ScrollPane的视口,ScrollPane就会显示滚动条,而ListView自身的滚动条就不会出现了。

内容的提问来源于stack exchange,提问作者ESipalis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:01:03