Quote Originariamente inviata da ITobeI Visualizza il messaggio
Mettiamo il caso che io abbia una JFrame che contiene due JPanel. Entrambi hanno la dimensione massima ( quella della JFrame ) per aggiungere i due JPanel utilizzo il comando add:

frame.add(panel1);
frame.add(panel2);
Se il content pane di JFrame ha il BorderLayout predefinito, entrambi i pannelli andrebbero per default in CENTER ed è ovviamente scorretto perché appunto solo 1 componente va in ciascuna delle 5 aree di BorderLayout (nel tuo caso il secondo aggiunto va in CENTER).

Quote Originariamente inviata da ITobeI Visualizza il messaggio
E' possibile cambiare l' ordine di sovrapposizione dinamicamente? e che quindi voglio che sia il panel1 che deve essere visualizzato e il panel2 deve restare "dietro"? se si come? vi ringrazio

P.S.: i due pannelli devono avere entrambi setVisible = true, semplicemente uno in un periodo deve stare sopra l' altro e in un altro periodo l' inverso ma entrambi sempre visualizzati.
Dovresti precisare che cosa vuoi realizzare in generale, quali sono gli obiettivi della tua interfaccia utente.

Se vuoi mostrare sempre e solo uno tra N componenti, c'è CardLayout (layout manager). Esiste anche JTabbedPane (componente) per questo, ma ha le "linguette" per far cambiare tab direttamente all'utente e presumo/immagino non sia quello che vuoi.
Se invece vuoi realmente gestire in modo flessibile più componenti su "strati" differenti, esiste JLayeredPane (componente) che è fatto apposta per tenere componenti su strati differenti.

Tieni comunque presente che il concetto di z-order è sempre stato abbastanza critico in AWT/Swing, specialmente fino a prima di Java 5. Perché lo z-order dipendeva (ed è ancora così di base) dall'ordine degli add nel contenitore. Poi da Java 5 sono stati effettivamente aggiunti dei metodi in Container per lo z-order ma è molto raro doverli usare (e va letta bene la documentazione).