Sto utilizzando JavaFX in un progetto anziché Swing a causa del multimedia avanzato, del visualizzatore web e della possibilità di utilizzare effetti visivi. Tuttavia, ciò che ho imparato da quello che ho trovato sul web (http://docs.oracle.com/javafx/2/layout/jfxpub-layout.htm e altri) è che JavaFX gestori di layout messa a fuoco sul ridimensionamento delle dimensioni del genitore in base alla dimensione del contenuto, mentre swing concentra su ridimensionamento del contenuto in base al genitore, almeno in base allo Layout
utilizzato.Layout JavaFX scalabile con il genitore
In questo momento sto utilizzando un Accordion
con alcuni TitledPane
bambini. Uno di questi contiene uno GridPane
per il semplice motivo che è il modo migliore che conosco per emulare uno GridLayout
(come ho appreso dalla mia domanda precedente qui: JavaFX layout equivalent to GridLayout). Voglio che il contenuto di TitledPane
divida in 2 righe e 1 colonna, ogni riga con un'altezza del 50% dello spazio disponibile nel TitledPane
(ridimensionamento con lo Stage
o Scene
), equivalente a ciò che un all'interno di un BorderLayout.CENTER
compirebbe . Per questo, ho aggiunto uno GridPane
con 2 RowConstraint
s utilizzando setPercentHeight(50)
e 1 ColumnConstraint
con setPercentWidth(100)
. Tuttavia, ho notato che il contenuto si sta ridimensionando correttamente con la griglia, ma la griglia non occupa tutto lo spazio disponibile nel TitledPane
(perché apparentemente non si comporta come il centro di BorderPane
). Ho anche provato con setMaxWidth
per rendere il contenuto in scala con il genitore, ma non sembra funzionare neanche (come detto qui: JavaFX: How to make my custom component use all available space from parent layout?). E anche se lo fosse, ho bisogno di impostare la larghezza massima per OGNI discendente nella mia struttura ad albero dell'interfaccia utente per avere tutte le proporzioni?
In entrambi i casi, qualcuno sa come creare uno TitledPane
con due spazi uguali al di sotto di ciascuno di quella scala con le dimensioni del titledpane?
potrebbe dirmi qual è la differenza tra il setPercentWidth (100) e setFillWidth (vero) + setHgrow (Priority.ALWAYS)? – Warkst
setPercentWidth funzionerebbe, invece di setHGrow (Priority.ALWAYS). Entrambi faranno la stessa cosa nel caso in cui si stia utilizzando solo una colonna. Nel caso tu abbia più colonne, funzionerebbero diversamente. Perché setHGrow proverà a dire al layout quale colonna del reticolo deve crescere per riempire lo spazio disponibile non reclamato. – Rasha
setFillWidth (true) è per il contenuto della colonna, non per la colonna stessa. Il default è vero, penso. Quindi non è necessario impostarlo. Ciò che significa è se i figli della colonna saranno regolati per riempire tutta la larghezza della colonna. – Rasha