2012-06-20 8 views
9

Mi aplicación Java tiene varios marcos. Algunos de ellos están configurados para estar siempre en la parte superior. Sin embargo, cuando el usuario abre otro programa (digamos un navegador web), quiero que los marcos siempre en la parte superior se muevan al fondo, abriendo paso para que la otra aplicación se muestre completamente en la pantalla.¿Cómo puedo mantener un marco siempre en la parte superior dentro de la aplicación pero ponerlo en segundo plano cuando uso otras aplicaciones en Java?

+2

me gustaría ver si alguien responde a esta .... – Thihara

+0

* "Mi aplicación Java tiene varios marcos". * Ver [El uso de múltiples JFrames, ¿buena/mala práctica?] (Http://stackoverflow.com/a/9554657/418556) * "Algunos de ellos están configurados para estar siempre activados". arriba. "* Use un diálogo. No es exactamente el efecto que describes, sino el camino de menor sorpresa para el usuario. –

+0

@AndrewThompson Esto no es necesariamente cierto, depende de la aplicación. Estoy de acuerdo en que no es la mejor opción para un programador saltar a una nueva aplicación sin especificaciones para tales cosas.Pero no hay dudas de que este tipo de comportamiento sería el diseño preferido. –

Respuesta

4

Crea tu propio administrador de ventanas.

Cree un administrador de ventanas personalizado que implemente WindowListener, WindowStateListener y WindowFocusListener. Registre todos los marcos nuevos con este administrador y úselos para volver a colocar sus marcos siempre en la parte superior siempre que el usuario interactúe con los marcos.

Parece que su aplicación utiliza algún código de gestión de cuadros bastante personalizado. Supongo que a medida que continúes desarrollando la aplicación, este administrador de ventanas tendrá más funciones para administrar la interfaz de usuario. Esto no solo le dará el diseño para resolver su problema, sino también una base para cualquier cambio o mejora de este comportamiento.

Tenga en cuenta, sin embargo, que Java no puede controlar lo que el sistema operativo hace con otras aplicaciones. Ni siquiera puede llevar de manera confiable un cuadro al primer plano sobre otras aplicaciones en todos los sistemas operativos. Tendrá que trabajar con los sistemas operativos que admitirá para escribir este Administrador de ventanas para ofrecerle el comportamiento que desea.

+0

¿Cómo gestionará esto las ventanas sin crear instancias desde la JVM actual? – Dave

+0

No puede. Este diseño proporcionará la base para controlar este comportamiento. Podría ser una solución mejor tener solo un marco MDI y tener todos los marcos de aplicaciones abiertos dentro. Esto daría un control absoluto sobre tales cosas, pero no conozco los requisitos y solo puedo desactivar lo que OP me formuló en la pregunta. –

1

Mi aplicación Java tiene varios marcos. Algunos de ellos están configurados para estar siempre en la parte superior.

no haga eso, utilice CardLayout en cambio, en el caso de que realmente se necesita la acción end_user entonces para usar

  • JOptionPane

  • modal JDialog (o ModalityType con AplicationModal)

  • re_use JDialog (getContentPane.remo Veall()) para el próximo uso de

Sin embargo, cuando el usuario abre otro programa (digamos un navegador web), quiero que los marcos siempre-on-top para pasar a un segundo plano, haciendo camino para que la otra aplicación se muestre completamente en la pantalla.

esto podría ser muy molesto para end_user, utilice FullScreen resto vez

aviso más importante está en el comentario de @Andrew Thompson

Cuestiones relacionadas