Llame al método requestFocus()
.
No se garantiza que esto funcione, porque hay muchas razones por las que un sistema operativo no permite que un marco tenga foco. Podría haber otro marco con mayor prioridad en una aplicación diferente. También hay algunos escritorios Linux que (si recuerdo correctamente) no permiten que los marcos soliciten el foco.
Para tener más posibilidades de éxito, también recomiendo llamar al método toFront()
antes de solicitar el enfoque.
frame.setVisible(true);
frame.toFront();
frame.requestFocus();
Por favor, tenga en cuenta, nada de esto está garantizado debido a la manipulación marco, sobre todo con el enfoque y la estratificación, es muy dependiente del sistema operativo. De modo que configure el marco como visible, muévalo al frente y solicite el enfoque. Una vez que renuncie al EDT, el sistema operativo probablemente le dará al marco el enfoque. Por lo menos, la ventana debe estar en la parte superior.
Para futuros visitantes que deseen enfocar un JFrame, vea mi respuesta en la página que utiliza 'frame.requestFocus()'. La respuesta aceptada resuelve el problema de OP, pero la solución es muy específica para su situación. –