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?
Respuesta
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.
¿Cómo gestionará esto las ventanas sin crear instancias desde la JVM actual? – Dave
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. –
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
modal JDialog (o
ModalityType
conAplicationModal
)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
- 1. ¿Cómo mantener un QWidget siempre en la parte superior?
- 2. Java setFullScreenWindow() mantener en la parte superior
- 3. Mantener diálogos en la parte superior de la ventana, pero no en la parte superior de todo
- 4. iOS: mantener la aplicación ejecutándose en segundo plano
- 5. Proporcionar un servicio en segundo plano para otras aplicaciones
- 6. siempre en la parte superior div dentro de la zona
- 7. Enfrente de "siempre en la parte superior"
- 8. Mantener la ventana en la parte superior al cambiar espacios
- 9. ¿Cómo mantener la conexión de socket VOIP en segundo plano?
- 10. ¿Mantener el elemento de encabezado siempre en la parte superior cuando se desplaza?
- 11. Para identificar el proceso en segundo plano y ponerlo en primer plano en C++ WIN32
- 12. No obtengo didReceiveMemoryWarning cuando la aplicación está en segundo plano
- 13. ¿Cómo ejecutar siempre un servicio en segundo plano?
- 14. iOS acceso a la red de aplicaciones en segundo plano
- 15. ¿Cómo mantener mi ventana más alta en la parte superior?
- 16. ¿Cómo puedo determinar cuándo terminará mi aplicación en segundo plano?
- 17. iPhone: cómo configurar la insignia de la aplicación, cuando la aplicación está cerrada/en segundo plano?
- 18. mantener aplicación que se ejecuta en segundo plano
- 19. aplicación de Android que se ejecuta en la parte superior de todas las demás aplicaciones?
- 20. ¿Puedo detectar cuándo un subproceso en segundo plano es eliminado por la aplicación cuando se cierra la aplicación?
- 21. cómo ejecutar la aplicación en segundo plano en android?
- 22. Configuración de una ventana XAML siempre en la parte superior (pero no en la propiedad TopMost)
- 23. Enhebrado: procesamiento en segundo plano de la aplicación C++ Cinder para mantener la IU receptiva
- 24. Inicio de servicio en segundo plano cuando Android enciende
- 25. Propietario de la ventana en WPF sin comportamiento siempre en la parte superior
- 26. ¿Cómo mantener el encabezado estático, siempre en la parte superior mientras se desplaza?
- 27. ¿Cómo ejecutar una aplicación de Android en segundo plano?
- 28. Visual Studio siempre en la parte superior al depurar
- 29. ExtJS 4 "siempre en la parte superior" Ventana
- 30. cómo mantener gtk.window siempre en el nivel superior
me gustaría ver si alguien responde a esta .... – Thihara
* "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. –
@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. –