Deteniendo JPopupMenu robando el foco

tengo unJTextField para lo cual espero sugerir resultados que coincidan con la entrada del usuario. Estoy mostrando estas sugerencias en unaJList contenido dentro de unJPopupMenu.

sin embargo, al abrir el menú emergente programáticamente víashow(Component invoker, int x, int y), el foco se está sacando de laJTextField.

Curiosamente, si llamosetVisible(true) en cambio, el foco no es robado; pero luego elJPopupMenu no está adherido a ningún panel, y al minimizar la aplicación mientras la caja está abierta, permanece pintada en la ventana.

También he intentado restablecer el enfoque a laJTextField utilizandorequestFocus(), pero luego tengo que restaurar la posición de intercalación usandoSwingUtilities.invokeLater(), y elinvocar más tarde El lado de las cosas es darle al usuario un ligero margen para jugar con los contenidos existentes, sobrescribirlo o hacer otras cosas impredecibles.

El código que tengo es efectivamente:

<code>JTextField field = new JTextField();
JPopupMenu menu = new JPopupMenu();

field.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
        JList list = getAListOfResults();

        menu.add(list);
        menu.show(field, 0, field.getHeight());
    }
});
</code>

¿Alguien puede sugerir la mejor avenida para bajar para mostrar elJPopupMenu programáticamente manteniendo el enfoque en elJTextField?

Respuestas a la pregunta(3)

Su respuesta a la pregunta