2010-09-21 6 views
5

In breve, il mio bisogno è di avere un'immagine di sfondo nella mia app java, e su qualche evento, creare qualche altra grafica sopra quell'immagine.Java - controllo dell'ordine Z di JPanels

Stavo pensando di utilizzare JPanel per disegnare l'immagine di sfondo, aggiungerla al mio JFrame all'inizio del programma, quindi aggiungere altri JPanel in aggiunta a determinati eventi. Il problema è che Swing dà agli JPanel aggiunti per primi l'indice Z più alto, quindi quale dovrebbe essere il mio background in cima a tutto.

Esiste un modo per controllare l'indice/l'ordine Z degli JPanel, oppure sto sbagliando tutto questo?

risposta

2

suona strano per aggiungere mutiple JPanels e usare z-order. Ti suggerisco di aggiungere semplicemente ONE JPanel con il metodo paintComponent (Graphics g) sovrascritto, in cui disegni l'immagine corretta in base ai tuoi eventi.

Oppure utilizzare il CardLayout, e aggiungere JLabels (con immagini diverse), poi, quando il vostro evento attiva, utilizzare

CardLayout cl = (CardLayout)getLayout(); 
cl.show(this, "card3"); 

per mostrare la JLabel corretta.

1

pensavo che avrei usato un JPanel per disegnare l'immagine di sfondo in, aggiungerlo al alla mia JFrame l'inizio del programma,

sembra ragionevole.

e quindi aggiungere altri JPanel in cima a che su determinati eventi. Il problema è Swing dà JPanels aggiunto prima l'indice Z più alto, quindi quale dovrebbe essere il mio sfondo viene visualizzato in cima a tutto.

Aggiungere un pannello a un pannello è come aggiungere un altro componente al pannello. Il componente figlio verrà dipinto sopra il pannello genitore. Non c'è bisogno di giocare con Z-Order.

La chiave è impostare un gestore di layout sul pannello con l'immagine. Quindi ogni pannello che aggiungi al pannello immagine deve essere reso non opaco in modo che l'immagine di sfondo venga dipinta.

Forse lo Background Panel può aiutarti. Rende automaticamente qualsiasi componente aggiunto direttamente al pannello non opaco.

2

Lo JLayeredPane è progettato proprio per questo scopo. Ti consente di controllare l'ordine Z dei componenti.