2009-04-20 1 views
6

Stiamo provando a salvare lo stato dell'applicazione all'uscita e ripristinarlo all'avvio. Parte dello stato è l'ordine Z relativo di tutti i JFrames.Esiste uno swing di Swing per interrogare o impostare l'ordine Z di una finestra?

Sfortunatamente, Swing non sembra fornire alcun metodo per imparare o impostare l'ordine Z di una finestra (anche rispetto ad altre finestre nella stessa VM).

Ci occupiamo di impostare l'ordine Z chiamando su Freccia() su tutte le finestre nell'ordine successivo. Ma interrogare l'ordine Z rimane irrisolto. (L'aggiunta di focus lister non funziona sempre, ad esempio, quando si utilizza l'azione "Cascade" di Windows su un gruppo di finestre.)

Qualche idea?

+0

duplicato di http://stackoverflow.com/questions/624885/how-to-get-the-z-order-of-jinternalframes-in-a-jdesktoppane? – dfa

+1

no non lo è, non sto parlando di JInternalFrames – sereda

risposta

5

Non con granularità.

Come dici tu, puoi chiamare a Front() e a Back(), e puoi chiedere a una finestra di "rimanere in cima", ma è praticamente tutto.

Un'altra opzione è quella di avere un frame con frame interni e utilizzare setComponentZOrder() (funziona solo per i componenti interni, tuttavia, è necessario chiamarlo sul contenitore).

Credo che uno dei motivi per cui non è stata una priorità in Swing è che il supporto per Z-ordering è piuttosto dipendente dalla piattaforma. (Ma hey, cosa non lo è ...)

-1

È possibile utilizzare setComponentZOrder (Component c, int layer) e getComponentZOrder (Component c) dalla classe Container. C'è un consiglio tecnico JDC su questo: http://72.5.124.55/developer/JDCTechTips/2005/tt0118.html

+2

solo per segnalare i futuri visualizzatori di questo thread: questo metodo si applica ai contenuti di JFrame, non a JFrame stesso nel contesto delle altre finestre del sistema. –