JavaFX:Untergeordnete Elemente an die HBox-Breite anpassen
Frage
Ist es möglich, untergeordnete Elemente in einer HBox so zu verwalten, dass die Summe der Breiten aller untergeordneten Elemente der Breite der HBox entspricht?
Damit Elemente die HBox füllen und kein Platz übrig bleibt.
Die Höhe der untergeordneten Elemente entspricht standardmäßig der Höhe der HBox. Wie sieht es also mit der Breite aus?Ich möchte die Breite in meinem Programm nicht berechnen.Es wäre besser, wenn das Layout dies automatisch erledigt, sodass keine Berechnung erforderlich ist.
Lösung
Es kommt darauf an, was für Kinder das tun HBox
enthalten.Bei einigen untergeordneten Knoten handelt es sich möglicherweise nicht um veränderbare Knoten.Im Allgemeinen können Sie jedoch verwenden HBox.setHgrow()
Methode und stellen Sie dasselbe ein Priority
für alle Kinder von hbox.Die Erklärung finden Sie im Javadoc:
Legt die horizontale Wachstumspriorität für das Kind fest, wenn sie durch eine Hbox enthalten ist.Wenn die Hbox festgelegt wird, wird die Priorität verwendet, um zusätzlichen Speicherplatz zuzuweisen, wenn die Hbox größer als die bevorzugte Breite ist.Wenn mehrere Hbox -Kinder die haben Dasselbe horizontal wachsen Priorität, dann wird der zusätzliche Platz sein Teilt Abend zwischen ihnen.Wenn kein horizontales Wachstumspriorität auf ein Kind festgelegt wird, wird die Hbox niemals zusätzlichen horizontalen Platz bereitstellen, falls verfügbar.Wenn Sie den Wert auf Null setzen, wird die Einschränkung entfernt.
Wenn Sie außerdem versuchen, ein rasterartiges Layout zu erhalten, probieren Sie beispielsweise andere Layoutoptionen aus TilePane
oder FlowPane
und vielleicht GridPane
.
Andere Tipps
Der einfache Code für Ihre Antwort wäre dies:
generasacodicetagpre.Es wird empfohlen, die HBOX-Klasse eher als Name des HBOX-Fensters zu verwenden.
in FXML
:
Hinzufügen zu @ BDSHAHABs Antwort, da HBox versuchen, ihre Kinder auf ihre bevorzugten Breiten zu ändern, füllen sie nur das Feld, wenn ihre kombinierten bevorzugten Breiten breiter als die HBOX-Breite sind.
Es kann also notwendig sein, etwas zu tun wie:
generasacodicetagpre.