У меня есть BorderPane
с ScrollPane
как элемент центра. Он автоматически изменяет размер, чтобы заполнить экран. Внутри ScrollPane
есть HBox
, который не имеет содержимого, но является целью перетаскивания. Поэтому я хочу, чтобы он заполнил его родительский ScrollPane
.
Каков предпочтительный способ сделать это?
То, что я пробовал до сих пор, переопределяет метод ScrollPane.resize(...)
для изменения размера HBox
, но он кажется довольно сложным и неортодоксальным.
edit: Чтобы добавить к нему полезный код, я могу решить эту проблему, но я считаю, что для этого нужно сделать несколько лучших способов:
@Override
public void resize(double width, double height) {
super.resize(width, height);
double scrollBarHeight = 2;
double scrollBarWidth = 2;
for (final Node node : lookupAll(".scroll-bar")) {
if (node instanceof ScrollBar) {
ScrollBar sb = (ScrollBar) node;
if (sb.getOrientation() == Orientation.HORIZONTAL) {
System.out.println("horizontal scrollbar visible = " + sb.isVisible());
System.out.println("width = " + sb.getWidth());
System.out.println("height = " + sb.getHeight());
if(sb.isVisible()){
scrollBarHeight = sb.getHeight();
}
}
if (sb.getOrientation() == Orientation.VERTICAL) {
System.out.println("vertical scrollbar visible = " + sb.isVisible());
System.out.println("width = " + sb.getWidth());
System.out.println("height = " + sb.getHeight());
if(sb.isVisible()){
scrollBarWidth = sb.getWidth();
}
}
}
}
hBox.setPrefSize(width-scrollBarWidth, height-scrollBarHeight);
}
Код, частично взятый отсюда: Как получить доступ к полосам прокрутки ScrollPane