2009-04-20 16 views
6

Estamos tratando de guardar el estado de la aplicación al salir y restaurarla al inicio. Parte del estado es el orden Z relativo de todos los JFrames.¿Hay un hack Swing para consultar o establecer el orden Z de una ventana?

Desafortunadamente, Swing no parece proporcionar ningún método para aprender o establecer el orden Z de una ventana (incluso en relación con otras ventanas en la misma máquina virtual).

Nos ocupamos de establecer el orden Z llamando a Front() en todas las ventanas en orden sucesivo. Pero consultar el orden Z permanece sin resolver. (Agregar oyentes de enfoque no funciona siempre, por ejemplo, cuando se usa la acción "Cascada" de Windows en un grupo de ventanas.)

¿Alguna idea?

+0

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

+1

no, no, no estoy hablando de JInternalFrames – sereda

Respuesta

5

No con granularidad.

Como dices, puedes llamar a Front() y toBack(), y puedes pedir una ventana para "mantenerte en la parte superior", pero eso es todo.

Otra opción es tener un marco con marcos internos, y usar setComponentZOrder() (esto solo funciona para los componentes internos, sin embargo, tiene que llamarlo en el contenedor).

Creo que una de las razones por las que no ha sido una prioridad en Swing es que la compatibilidad con el orden Z depende bastante de la plataforma. (Pero bueno, lo que no es ...)

-1

Puede usar setComponentZOrder (Component c, int layer) y getComponentZOrder (Component c) de la clase Container. Hay un JDC Tech Tips sobre esto: http://72.5.124.55/developer/JDCTechTips/2005/tt0118.html

+2

solo para marcar a los futuros espectadores de este hilo: este método se aplica al contenido del JFrame, no al JFrame en sí en el contexto de las otras ventanas del sistema. –

Cuestiones relacionadas