JavaFX: отключить горизонтальную полосу прокрутки TableView

У меня следующий вопрос: я хотел бы отключить горизонтальную полосу прокрутки моего 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;
}

Источники: Как чтобы скрыть горизонтальную полосу прокрутки ListView в JavaFX и 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 по горизонтали.

Можно ли скрыть только полосу прокрутки или можно и саму прокрутку отключить?

Любая помощь приветствуется!


person bashoogzaad    schedule 03.11.2014    source источник
comment
Попробуйте сделать столбцы более узкой ширины, чтобы избавиться от растяжек. В противном случае предоставьте MVCE.   -  person Uluk Biy    schedule 06.11.2014


Ответы (1)


Попробуйте установить

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

без установки предварительной ширины столбцов.

person Uluk Biy    schedule 03.11.2014
comment
Спасибо Улук Бий за ответ! Я попробовал, и я больше не могу прокручивать по горизонтали. Недостатком является то, что я не могу контролировать ширину столбцов. Теперь все столбцы имеют одинаковую ширину. можно ли это исправить? - person bashoogzaad; 04.11.2014
comment
Затем попробуйте установить ширину pref, но они будут эффективны только для первоначального рендеринга. Эти значения ширины будут меняться при изменении размера столбца, как описано в документе политики. - person Uluk Biy; 04.11.2014
comment
@bashoogzaad также см. Автоматическая ширина столбца JavaFX 2 - person Uluk Biy; 04.11.2014
comment
Есть ли способ установить ширину столбцов? Ширина pref теперь переопределяется политикой. - person bashoogzaad; 06.11.2014
comment
Полоса прокрутки все еще иногда появляется. Это не делает ничего полезного, но появляется, вероятно, потому, что ширина таблицы равна 100,1%. - person JoshuaD; 12.07.2017