2013-04-26 11 views
13

Il JavaFX docs for HBox dicono:Perché i bambini del mio JavaFX HBox non cresceranno (SceneBuilder)?

Se un hbox viene ridimensionato più grande della sua larghezza preferita, per impostazione predefinita è tenere i bambini alle loro larghezze preferite, lasciando lo spazio extra inutilizzato. Se un'applicazione vuole che uno o più bambini siano allocati in tale spazio, può opzionalmente impostare un vincolo hgrow sul bambino. Vedere "Vincoli di layout opzionali" per i dettagli.

Nell'immagine allegata, perché il pulsante non riempie la larghezza orizzontale?

enter image description here

non è che lo stesso come il codice di HBox.setHgrow(field, Priority.ALWAYS) i documenti si riferiscono.

risposta

19

Selezionare il pulsante di come avete fatto nella vostra schermata e in quelle scatole Dimensioni nel riquadro layout a destra impostare la larghezza massima a:

MAX_VALUE 

Questo fermerà la dimensione massima del pulsante di essere legato alla dimensione preferita del pulsante.

Vedi Tips for Sizing and Aligning Nodes

controlli UI di Oracle forniscono anche le dimensioni predefinite minime e massime che si basano sull'utilizzo tipico del controllo. Ad esempio, la dimensione massima di un oggetto Button ha come impostazione predefinita la sua dimensione preferita perché in genere non si desidera che i pulsanti crescano in modo arbitrario.

....

Per consentire tutti i pulsanti per essere ridimensionati alla larghezza del riquadro VBox, la larghezza massima di ciascun pulsante è impostato alla costante Double.MAX_VALUE, che consente un controllo crescere senza limiti. Un'alternativa all'utilizzo della costante del valore massimo consiste nel impostare la larghezza massima su un valore specifico, ad esempio 80.0.

+0

equivalente in codice: 'myButton.setMaxWidth (Double.MAX_VALUE);' –

2

Se si utilizza direttamente fxml, è possibile utilizzare il maxWidth="Infinity", o - come SceneBuilder fa quando si utilizza MAX_VALUE rappresentato da maxWidth="1.7976931348623157E308".

Questa potrebbe essere la seguente (la barra di avanzamento è all'interno di un GridPane:

<ProgressBar maxWidth="Infinity" prefWidth="200.0" progress="0.0" GridPane.columnIndex="0" GridPane.hgrow="ALWAYS" GridPane.rowIndex="2" GridPane.valignment="CENTER"> 
Problemi correlati