Ich habe ein BorderPane
mit einem ScrollPane
als das zentrale Element. Die Größe wird automatisch angepasst, um den Bildschirm zu füllen. Innerhalb der ScrollPane
ist eine HBox
, die keinen Inhalt hat, aber ein Drag-and-Drop-Ziel ist. Deshalb möchte ich, dass es seinen Elternteil ScrollPane
füllt.So passen Sie den JavaFX ScrollPane-Inhalt an die aktuelle Größe an
Was ist der bevorzugte Weg, dies zu tun?
Was ich bisher versucht habe, überschreibt die ScrollPane.resize(...)
Methode, um die HBox
Größe zu ändern, aber es scheint ziemlich kompliziert und unorthodox.
bearbeiten: Um einigen nützlichen Code dieses hinzufügen, das ist, wie ich das Problem umgehen kann, aber ich glaube, es gibt einigen besseren Weg sein muss, 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 von hier genommen: How to access the Scrollbars of a ScrollPane
Es ist ok, ich habe nur eine hgrow und vgrow manchmal und es funktioniert jetzt – user7867610