Domanda
Come faccio a impostare Z-ordine per VBox
in JavaFX?
Soluzione
Z-ordine in JavaFX è in realtà l'ordine in scenegraph, es. nella sequenza contenuto della scena (poi il contenuto dei gruppi, contenitori, ecc.).
Tutti i nodi hanno anche toFront () e le funzioni toBack () per contribuire a cambiare questo ordine. Per un controllo più fine, è necessario rimuovere i nodi da un posto e inserirla superiore o inferiore nella sequenza.
Altri suggerimenti
Con le funzioni toFront () e toBack () si può infatti influenzare l'ordine z, ma essere consapevoli che questo influenza anche il layout. Il HBox e VBox per esempio anche utilizzare la sequenza dei bambini per fare il layout e lo spostamento qualcosa verso la parte anteriore si muoverà fino alla fine del [HV] Box. Questo potrebbe non essere quello che stai cercando.
Ero alla ricerca di un modo per fare un'animazione con il nodo animato in cima a tutti gli altri, senza rovinare il layout. Sembra che ci sia alcun modo di farlo perché lo z-ordine e l'ordine di layout sono entrambi presi dal bambino-ordine.
Mentre le altre risposte sono ancora corretti, JavaFX 9 aggiunto un modo per manipolare l'ordine Z senza modificare la lista dei bambini. Questo viene fatto con la proprietà Node.viewOrder
.
Javadoc:
Definisce il rendering e il commissionamento di questo
Node
all'interno del suo genitore.Questa proprietà viene utilizzata per alterare il rendering e commissionamento di un nodo all'interno del suo genitore senza riordinare la lista
children
del genitore. Ad esempio, questo può essere usato come un modo più efficiente per realizzare tale trasparenza smistamento. Per fare questo, un'applicazione può assegnare il valoreviewOrder
di ciascun nodo alla distanza calcolata tra quel nodo e lo spettatore.Il genitore attraverserà la sua
children
in ordine decrescenteviewOrder
. Ciò significa che un bambino con unviewOrder
inferiore sarà di fronte a un bambino con unaviewOrder
più alto. Se due figli hanno lo stessoviewOrder
, il genitore li attraversare nell'ordine in cui appaiono nella listachildren
del genitore.Tuttavia,
viewOrder
non altera il layout e messa a fuoco ordine di attraversamento di questaNode
all'interno del suo genitore. Un genitore attraversa sempre la sua listachildren
al fine quando si fa il layout o messa a fuoco attraversamento.Valore predefinito:
0.0
Dal:
9