Mam BorderPane
z elementem ScrollPane
jako elementem środkowym. Zmienia rozmiar automatycznie, aby wypełnić ekran. Wewnątrz ScrollPane
jest HBox
, który nie ma zawartości, ale jest obiektem typu "przeciągnij i upuść". Dlatego chcę, aby wypełnił swojego rodzica ScrollPane
.Jak zmienić rozmiar zawartości JavaFX ScrollPane na bieżący rozmiar?
Jaki jest preferowany sposób na zrobienie tego?
To, co próbowałem do tej pory, jest przesłonięcie metody ScrollPane.resize(...)
, aby zmienić rozmiar HBox
, ale wydaje się dość skomplikowane i niekonwencjonalne.
edit: Aby dodać kilka przydatnych kod do tego, to w jaki sposób można obejść ten problem, ale wierzę, że musi być jakiś lepszy sposób to zrobić:
@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);
}
kod częściowo zaczerpnięte z tutaj: How to access the Scrollbars of a ScrollPane
Jest ok, ja po prostu umieścić hgrow i vgrow czasami i to działa teraz – user7867610