JavaFX:禁用TableView的水平滚动条

时间:2014-11-03 11:21:08

标签: javafx scrollbar tableview javafx-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;
}

来源: How to hide the horizontal Scrollbar of a ListView in JavaFXhttps://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可以水平滚动。

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

尝试设置

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

没有设置列的pref宽度。