So passen Sie die Größe von JavaFX ScrollPane-Inhalten an die aktuelle Größe an
Ich habe einBorderPane
mit einerScrollPane
als zentrales Element. Die Größe wird automatisch angepasst, um den Bildschirm auszufüllen. In derScrollPane
ist einHBox
Das hat keinen Inhalt, ist aber ein Drag-and-Drop-Ziel. Deshalb möchte ich, dass es sein Elternteil ausfülltScrollPane
.
Was ist der bevorzugte Weg, um dies zu tun?
Was ich bisher ausprobiert habe, ist das Überschreiben derScrollPane.resize(...)
Methode zur Größenänderung derHBox
aber es scheint ziemlich kompliziert und unorthodox.
edit: Um hier nützlichen Code hinzuzufügen, kann ich das Problem auf diese Weise umgehen, aber ich glaube, es muss einen besseren Weg geben, dies zu tun:
@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);
}
Code teilweise hier entnommen:So greifen Sie auf die Bildlaufleisten eines Bildlauffensters zu