Me gustaría activar mi aplicación Swing programáticamente. Quiero decir que me gustaría escribir código que haga que el JFrame
sea visible y esté enfocado (el encabezado de la ventana debe estar resaltado). Intenté usar requestFocus()
. Funciona solo si la aplicación tiene al menos 2 ventanas A y B: A está oculta, B es visible. Ahora si llamo al A.requestFocus()
, se activa como yo quiera. No sucede si la aplicación tiene solo una ventana o si ambas son invisibles.¿Cómo activar la ventana en Java?
Encontré 2 soluciones.
- usan un marco falso no decorado transparente que siempre está en la parte superior. Esta ventana falsa tendrá el rol de ventana B. No intenté implementarla, pero parece que debería funcionar.
- llamada
A.setAlwaysOnTop(true)
. Esto trae la ventana A encima de otras ventanas. Pero todavía no está enfocado. Usejava.awt.Robot
(mouseMove, mousePress, mouseRelease) para hacer un clic en el encabezado de la ventana A. Ahora llame alA.setAlwaysOnTop(false)
y vuelva a colocar el puntero del mouse en su posición anterior. Implementé el código y funciona, pero parece una solución fea.
¿Existe una solución "correcta"?
Por lo que yo puedo decir no hay un método 'Frame.setSelected' –
está en JInternalFrame –
Sí, setSelected() no muere existe hasta el momento ... – AlexR