Sembra che molte risposte sono già state erogate e dovrebbero lavorare. Tuttavia, c'è un modo per impostare percentuali:
<fx:define>
<Screen fx:factory="getPrimary" fx:id="screen" />
</fx:define>
Questo aiuterebbe a rilevare le dimensioni dello schermo corrente, è visualizzato sulla domanda. Ora che abbiamo le dimensioni del display, possiamo giocare con essa in FXML come segue:
<HBox fx:id="hroot" prefHeight="${screen.visualBounds.height}" prefWidth="${screen.visualBounds.width}"> Your FXML elements inside the root... </HBox>
Nota che uso visualBounds, dal momento che questo mi avrebbe ottenere lo spazio disponibile sullo schermo, dal momento che non lo faccio per esempio, vuoi una sovrapposizione con la barra delle applicazioni in Windows. Per le applicazioni a schermo intero, devi solo usare 'limiti'.
Ora, per arrivare al punto in cui utilizzi le percentuali, puoi effettivamente giocare con il valore di prefheight e prefWidth. È possibile inserire calcoli all'interno dello $ {}.
Opzionalmente:
Se si desidera avere tutti gli elementi utilizzano dimensioni relative, basta fare riferimento a loro, utilizzando il loro ID e la larghezza o l'altezza di proprietà, e rendere il vostro calcolo.
<VBox fx:id="VBSidebar" prefWidth="${hroot.width*0.15}" prefHeight="${hroot.height}"> more elements.. </VBox>
Spero che questo aiuti!
Come impostare i vincoli di colonna all'interno di SceneBuilder? Sto usando SceneBuilder 8.1.1, ho un GridPane con due colonne, e non riesco a trovare i vincoli di colonna o percentWidth ovunque. – skrilmps