chiamate il metodo requestFocus()
.
Questo non è garantito per funzionare, perché ci sono molte ragioni per cui un sistema operativo non consentirebbe una messa a fuoco di un frame. Potrebbe esserci un altro frame con priorità più alta in un'applicazione diversa. Ci sono anche alcuni desktop Linux che (se ricordo male) non permettono ai frame di richiedere lo stato attivo.
Per offrirti una migliore possibilità di successo, ti consiglio anche di chiamare il metodo toFront()
prima di richiedere l'attivazione.
frame.setVisible(true);
frame.toFront();
frame.requestFocus();
Si prega di tenere a mente, niente di tutto questo è garantito perché la manipolazione fotogramma, in particolare con la messa a fuoco e stratificazione, è molto dipendente dal sistema operativo. Quindi imposta la cornice su visibile, spostala in avanti e richiedi la messa a fuoco. Una volta abbandonato l'EDT, il sistema operativo probabilmente darà al frame il focus. Per lo meno, la finestra dovrebbe essere in cima.
fonte
2015-05-29 12:29:54
Per i futuri visitatori che desiderano mettere a fuoco un JFrame, vedere la mia risposta nella pagina che utilizza 'frame.requestFocus()'. La risposta accettata risolve il problema dell'OP, ma la soluzione è molto specifica della sua situazione. –