JavaFX:禁用TableView的水平滚动条

bas*_*aad 6 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;
}
Run Code Online (Sandbox Code Playgroud)

来源: 如何在JavaFXhttps://community.oracle.com/thread/2377826?tstart=0中隐藏ListView的水平滚动条.

这工作正常,但我仍然可以水平滚动TableView(虽然滚动条不可见).我已将列宽设置如下:

col1.setPrefWidth(table.getPrefWidth()*0.40);
col2.setPrefWidth(table.getPrefWidth()*0.20);
col3.setPrefWidth(table.getPrefWidth()*0.20);
Run Code Online (Sandbox Code Playgroud)

这在TableView不显示任何行时有效.但是当我填充它(通过按下按钮)时,列会稍微拉伸,这使得TableView可以水平滚动.

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

任何帮助是极大的赞赏!

Ulu*_*Biy 5

尝试设置

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
Run Code Online (Sandbox Code Playgroud)

无需设置列的首选宽度。

  • 有时仍然会出现滚动条。它没有做任何有用的事情,但它出现了,可能是因为表格宽度约为 100.1%。 (4认同)
  • 有什么办法仍然可以设置列宽吗?首选项宽度现在已被策略覆盖。 (2认同)