JavaFX中TableView出现多余空行的解决方法咨询
解决JavaFX TableView多余空行问题
这是JavaFX TableView很常见的小困扰,我来帮你搞定!
你遇到的多余空行,本质是因为默认情况下TableView会自动填充父容器的剩余空间,没有数据的区域就会显示空行。哪怕你调整面板高度,如果TableView还是被允许拉伸,这个问题就会存在。下面给你两种靠谱的解决办法:
方法1:让TableView高度刚好适配数据行数(彻底移除空行)
这种方法会让TableView的高度精确匹配你的数据行数+表头,完全没有多余空间。你可以在代码里添加行高设置和高度计算:
修改你的start方法,在初始化TableView之后加上这段代码:
// 设置固定的行高(默认行高一般是24.0,你可以根据视觉效果调整) table.setFixedCellSize(24.0); // 绑定TableView的首选高度:表头高度(默认24) + 行高 × 数据行数 // 这样数据变化时高度会自动更新,非常灵活 table.prefHeightProperty().bind(Bindings.createDoubleBinding(() -> 24.0 + table.getFixedCellSize() * table.getItems().size(), table.getItems() ));
如果你的数据是固定不变的,也可以直接硬编码计算高度:
table.setFixedCellSize(24.0); double totalHeight = 24.0 + table.getFixedCellSize() * getProduct().size(); table.setPrefHeight(totalHeight);
方法2:用CSS隐藏空行视觉效果(快速治标)
如果你不想调整TableView高度,只是不想看到空行的灰色背景,可以给TableView加一段CSS样式:
table.setStyle(""" .table-row-cell:empty { -fx-background-color: transparent; } .table-row-cell:empty .table-cell { -fx-border-width: 0px; } """);
这样空行的背景和边框都会消失,视觉上就像没有多余空行一样,但TableView本身还是会占据父容器的空间。
额外小提示
你的代码里quatityColoumn的拼写有点小错误,应该是quantityColumn,虽然不影响功能,但修正后代码更规范哦~
内容的提问来源于stack exchange,提问作者gopal krishna mareti
相关产品推荐
相关产品推荐

