Vorrei attivare la mia applicazione Swing in modo programmatico. Voglio dire che mi piacerebbe scrivere un codice che faccia sì che lo JFrame
sia visibile e focalizzato (l'intestazione della finestra dovrebbe essere evidenziata). Ho provato a usare requestFocus()
. Funziona solo se l'applicazione ha almeno 2 finestre A e B: A è nascosto, B è visibile. Ora se chiamo A.requestFocus()
diventa attivo come voglio. Non succede se l'applicazione ha solo una finestra o se entrambe le finestre sono invisibili.Come attivare la finestra in Java?
Ho trovato 2 soluzioni alternative.
- uso falso trasparente telaio undecorated che è sempre in primo piano. Questa finta finestra giocherà il ruolo della finestra B. Non ho provato a implementarla ma sembra che dovrebbe funzionare.
- chiamata
A.setAlwaysOnTop(true)
. Ciò porta la finestra A in cima ad altre finestre. Ma non è ancora a fuoco. Utilizzarejava.awt.Robot
(mouseMove, mousePress, mouseRelease) per fare clic sull'intestazione della finestra A. Ora chiamareA.setAlwaysOnTop(false)
e riportare il puntatore del mouse nella posizione precedente. Ho implementato il codice e funziona ma sembra una brutta soluzione.
Esiste una soluzione "giusta"?
Per quanto ne so non esiste un metodo 'Frame.setSelected' –
è in JInternalFrame –
Sì, setSelected() non muore esiste finora ... – AlexR