Итак, чтобы выяснить, является ли конкретная полоса прокрутки видимой, мне сначала нужно было ее найти, поэтому я просмотрел все полосы прокрутки в этой конкретной таблице.
Set<Node> scrollBars = itemsTableView.lookupAll(".scroll-bar");
Затем отфильтруйте набор, чтобы получить нужную полосу прокрутки (в моем случае - горизонтальную)
Optional<Node> horizontalScrollBar = scrollBars.stream()
.filter(node ->
((ScrollBar) node).getOrientation().equals(Orientation.HORIZONTAL))
.findAny();
А затем присоедините слушателя к свойству видимости полосы прокрутки
horizontalScrollBar.ifPresent(node ->
node.visibleProperty().addListener((observable, oldValue, newValue) -> {
if(newValue)
{
columnTableView.setStyle("-fx-padding: 0 0 13px 0;");
} else
{
columnTableView.setStyle("-fx-padding: 0 0 0 0;");
}
})
);
Почти выглядит просто так? Ну, это так, как только вы поняли, что
lookup(".scroll-bar:horizontal");
НЕ возвращает горизонтальную полосу прокрутки, кроме первой (вертикальной). И до тех пор, пока вы не поймете это, ваше приложение будет вести себя как-то загадочно.