Domanda

È possibile gestire elementi figlio in un Hbox, in modo che la somma delle larghezze di tutti gli elementi figlio sia uguale alla larghezza della Hbox?

In modo che gli elementi riempiano il hbox e non è rimasto spazio.

L'altezza degli elementi figlio è predefinita l'altezza dell'HBox, quindi che ne dici della larghezza?Non voglio calcolare la larghezza nel mio programma.Sarebbe meglio se il layout lo fa automaticamente, in modo che non sia necessario alcun calcolo.

È stato utile?

Soluzione

Dipende da che tipo di bambini contiene il HBox. Alcuni dei bambini potrebbero non essere rilevabili nodi. Tuttavia, in generale, è possibile utilizzare il metodo HBox.setHgrow() e impostare lo stesso Priority per tutti i figli di Hbox. La spiegazione è nel suo Javadoc:

.

imposta la priorità orizzontale per il bambino quando è contenuto da un Hbox. Se impostato, l'Hbox utilizzerà la priorità per allocare ulteriori spazio se l'HBox è ridimensionato più grande della sua larghezza preferita. Se I bambini Hbox multipli hanno il stesso orizzontale Grow Priority , quindi Lo spazio extra sarà split sera tra di loro . Se nessun orizzontale. Grow Priorità è impostato su un bambino, l'Hbox non lo assegnerà mai Ulteriore spazio orizzontale se disponibile. Impostazione del valore su Null rimuoverà il vincolo.

Inoltre, se si sta tentando di ottenere un layout di griglia, provare altre opzioni di layout, ad esempio TilePane o FlowPane e forse GridPane.

Altri suggerimenti

Il codice semplice per la tua risposta sarebbe questo:

Button button1 = new Button("Save");
Button button2 = new Button("Delete");
HBox.setHgrow(button1, Priority.ALWAYS);
HBox.setHgrow(button2, Priority.ALWAYS);
.

Si consiglia di utilizzare la classe HBOX piuttosto che il nome del riquadro HBOX.

in FXML:

<HBox>
   <Label HBox.hgrow="ALWAYS" maxWidth="Infinity">
       TEST
   </Label>
</HBox>
.

Aggiunta alla risposta @ Bdshahab, dato che Hbox cercherà di ridimensionare i loro figli alle loro larghezze preferite, riempiranno solo la scatola se le loro larghezze preferite combinate sono più larghe della larghezza hbox.

Quindi potrebbe essere necessario fare qualcosa come:

Button button1 = new Button("Save");
Button button2 = new Button("Delete");
HBox.setHgrow(button1, Priority.ALWAYS);
HBox.setHgrow(button2, Priority.ALWAYS);
button1.setPrefWidth(100000);
button2.setPrefWidth(100000);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top