JavaFX:禁用TableView的水平滚动条。

8

我有以下问题:我想禁用我的TableView的水平滚动条。它可能不可见,但是TableView也不能水平滚动。水平滚动条的可见性可以在CSS中设置:

.table-view *.scroll-bar:horizontal *.increment-button,
.table-view *.scroll-bar:horizontal *.decrement-button {
    -fx-background-color: null;
    -fx-background-radius: 0;
    -fx-background-insets: 0;
    -fx-padding: 0;
}

.table-view *.scroll-bar:horizontal *.increment-arrow, 
.table-view *.scroll-bar:horizontal *.decrement-arrow {
    -fx-background-color: null;
    -fx-background-radius: 0;
    -fx-background-insets: 0;
    -fx-padding: 0;
    -fx-shape: null;
}
来源:如何在JavaFX中隐藏ListView的水平滚动条https://community.oracle.com/thread/2377826?tstart=0

这个方法很好用,但是我仍然可以水平滚动TableView(尽管滚动条不可见)。我已经按照以下方式设置了列宽度:

col1.setPrefWidth(table.getPrefWidth()*0.40);
col2.setPrefWidth(table.getPrefWidth()*0.20);
col3.setPrefWidth(table.getPrefWidth()*0.20);

当TableView不显示任何行时,这个方法可以工作。但是当我通过按下一个按钮来填充它时,列会略微伸展,这使得TableView可以水平滚动。

是否只能隐藏滚动条,还是也可以禁用滚动本身?

非常感谢您的帮助!


尝试给列提供更窄的宽度以消除拉伸。否则提供一个最小可重现示例(MVCE)。 - Uluk Biy
1个回答

5

尝试设置

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

没有设置列的首选宽度。


1
感谢Uluk Biy的回答!我尝试了一下,现在无法水平滚动了。缺点是我无法控制列的宽度。现在所有列的宽度都相同。有什么解决方法吗? - bashoogzaad
然后尝试设置首选宽度,但我认为它们只对初始渲染有效。这些宽度值将根据策略文档中描述的列调整大小而更改。 - Uluk Biy
@bashoogzaad 还可以参考JavaFX 2自动列宽 - Uluk Biy
2
还有没有办法设置列宽?现在,首选项宽度被策略覆盖了。 - bashoogzaad
4
有时候滚动条仍会出现,它并没有实际作用,但是它会出现,这可能是因为表格的宽度达到了 100.1%。 - Grumblesaurus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接