Ich benutze JavaFX in einem Projekt statt Swing wegen der erweiterten Multimedia, Webviewer und die Möglichkeit, visuelle Effekte zu verwenden. Doch was ich habe gelernt, von dem, was ich im Internet gefunden (http://docs.oracle.com/javafx/2/layout/jfxpub-layout.htm und andere) ist, dass JavaFX Layout-Manager Fokus auf die Größe der Mutter Skalierung basierend auf der Größe des Inhalts, während Swing- konzentriert sich auf Skalierung des Inhalts nach dem Stamm, zumindest basierend auf der Layout
wird verwendet.JavaFX Layout skaliert mit Eltern
Im Moment verwende ich eine Accordion
mit einigen TitledPane
Kinder. Einer von ihnen enthält eine GridPane
aus dem einfachen Grund, es ist der beste Weg, den ich kenne, um eine GridLayout
zu emulieren (wie ich aus meiner vorherigen Frage hier gelernt: JavaFX layout equivalent to GridLayout). Ich möchte den Inhalt der TitledPane
in 2 Zeilen und 1 Spalte aufgeteilt haben, jede Zeile mit einer 50% Höhe des verfügbaren Speicherplatzes in der TitledPane
(Skalierung mit Stage
oder Scene
), was entspricht, was eine GridLayout(2,1)
innerhalb einer BorderLayout.CENTER
erreichen würde . Hierzu habe ich eine GridPane
mit 2 RowConstraint
s unter Verwendung setPercentHeight(50)
und 1 ColumnConstraint
mit setPercentWidth(100)
hinzugefügt. Allerdings habe ich bemerkt, dass der Inhalt mit dem Gitter richtig skaliert wird, aber das Gitter nimmt nicht den gesamten verfügbaren Platz in der TitledPane
auf (weil es sich scheinbar nicht wie ein BorderPane
's Zentrum verhält). Ich habe auch mit setMaxWidth
versucht, den Inhalt mit dem Elternteil zu skalieren, aber es scheint auch nicht zu funktionieren (wie hier gesagt: JavaFX: How to make my custom component use all available space from parent layout?). Und selbst wenn, würde ich die maximale Breite zu JEDEM Nachkommen in meinem UI-Elementbaum setzen müssen, um alle von ihnen zu skalieren?
Woher weiß jemand, wie man eine TitledPane
mit 2 gleichen Leerzeichen unter einander, die mit der tiledpanes Größe skalieren?
Können Sie mir sagen, was der Unterschied zwischen setPercentWidth (100) und setFillWidth (true) + setHgrow (Priority.ALWAYS)? – Warkst
setPercentWidth würde auch anstelle von setHGrow (Priority.ALWAYS) funktionieren. Sie werden beide dasselbe tun, wenn Sie nur eine Spalte verwenden. Wenn Sie mehrere Spalten haben, würden sie anders funktionieren. Weil setHGrow versucht, dem Layout mitzuteilen, welche Spalte der Gridpanel wachsen muss, um den nicht beanspruchten verfügbaren Platz zu füllen. – Rasha
setFillWidth (true) bezieht sich auf den Inhalt der Spalte, nicht auf die Spalte selbst. Der Standardwert ist wahr, denke ich. Sie müssen es also nicht einstellen. Was es bedeutet, ist, ob die Kinder der Spalte angepasst werden, um die gesamte Breite der Spalte zu füllen. – Rasha