Java FX Scrollpane automatisch resizen

lam_tr

Top Contributor
Hallo zusammen,

ich habe einen Kontainer, in dem Fall einen ScrollPane mit ein VBox als Kind.
In dem VBox befindet sich Steuerelement. Ich will dass der VBox automatisch sich vergrößert wenn die VBox weitere Kinder bekommt. Dabei soll sich auch das ScrollPane sicher verlängert dass ich auch scrollen kann. Aktuell ist es so dass der Content von ScrollPane inital gesetzt wurde. Das untere Bild stellt die Gui Aufstellung im Baum dar. Die Steuerlementenkinder werden dynamisch in die VBox hinzugefügt.

uc6rk5yl.png


Viele Grüße
lam
 
Hallo dzim,

das habe ich gemacht. Ich verstehe es irgendwie nicht. Muss ich den Kontainer im ScrolledPane mit ein Pref Size initialisieren? Selbst damit geht es nicht wirklich.
 
Nein, eigentlich nicht. Hast du dafür gesorgt, dass es maximale grösse haben könnte? Und dass es sich auch ordentlich im Parent-Container einfügt?

Hier mal ein kleines FXML bei mir, das vertikales Scolling erlaubt (und das auch funktionert!):

HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Do not edit this file it is generated by e(fx)clipse from ../src/main/resources/ch/cnlab/disentis/ui/PageDiscover.fxgraph
-->

<?import java.lang.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>
<?scenebuilder-stylesheet /ch/cnlab/disentis/style.css?>

<VBox xmlns:fx="http://javafx.com/fxml" fx:controller="ch.cnlab.disentis.ui.pages.PageDiscoverController" spacing="10" alignment="TOP_CENTER">

    <Label fx:id="header" userData="content-text-xlarge" text="Discover" wrapText="true">
        <styleClass>
            <String fx:value="content-text-xlarge" />
        </styleClass>
        <VBox.margin>
            <Insets top="10" bottom="10"/>
        </VBox.margin>
    </Label>
    <VBox fx:id="container" spacing="10" VBox.vgrow="SOMETIMES">
        <ScrollPane fx:id="scrollContent" fitToHeight="true" fitToWidth="true" VBox.vgrow="ALWAYS">
            <content>
                <StackPane fx:id="content" alignment="CENTER">
                    <ImageView fx:id="image" preserveRatio="true">
                        <image>
                            <Image url="@/ch/cnlab/disentis/ui/img/Grundriss_Kirche.png"/>
                        </image>
                    </ImageView>
                    <maxWidth><Double fx:constant="MAX_VALUE" /></maxWidth>
                </StackPane>
            </content>
            <maxHeight><Double fx:constant="MAX_VALUE" /></maxHeight>
            <VBox.margin>
                <Insets top="0" right="10" bottom="0" left="10"/>
            </VBox.margin>
        </ScrollPane>
        <Slider fx:id="zoomSlider" min="0.5" max="2.0" blockIncrement="0.1" majorTickUnit="0.25" snapToTicks="true"/>
        <maxHeight><Double fx:constant="MAX_VALUE" /></maxHeight>
    </VBox>
    <styleClass>
        <String fx:value="discover" />
    </styleClass>
    <padding>
        <Insets left="25" right="25"/>
    </padding>
</VBox>
 

Neue Themen


Zurück
Oben