Alternar entre os campos com "Enter"

Boa tarde,

Segue a baixo um trecho de código que fiz para alternar entre os campos de um JFrame com o “Enter” ao invés do “Tab”:

HashSet conj = new HashSet(this.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));

conj.add(AWTKeyStroke.getAWTKeyStroke(java.awt.event.KeyEvent.VK_ENTER, 0));

this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, conj);

até aí tudo bem…
o problema é se crio um evento actionPerformed em algum dos JTextField deste JFrame, ele não é reconhecido…

como faço para utilizar o código acima e um actionPerformed em um JTextField ao mesmo tempo?

Ora, para que você usaria o actionPerformed em um JTextField (basicamente usada para atender a um ENTER) se você já usa o ENTER como se fosse o TAB? Não dá para fazer as duas coisas ao mesmo tempo.

ora, tenho q tratar mais coisas no JTextField do que simplesmente mudar de campo… coisas especificas do programa…

pode fazer um action para o ENTER, e nesse action ele dá um setFocus() no proximo campo.
simples.

Opa…
fiz um código aqui que faz isso…

espero ter ajudado…
att

import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Main extends JFrame {
    JTextField[] caixasTexto;
    
    
    public Main() {
        super("teste");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout(FlowLayout.CENTER));
        setSize(400,400);
        Evento x = new Evento();
        caixasTexto = new JTextField[5];
        for (int i = 0; i < caixasTexto.length; i++) {
            caixasTexto[i] = new JTextField(10);
            caixasTexto[i].addKeyListener(x);
            add(caixasTexto[i]);
        }
    }
    
    public static void main(String[] args) {
        Main starter = new Main();
        starter.setVisible(true);
    }
    
    private class Evento implements KeyListener {
        public void keyTyped(KeyEvent e) {
        }

        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == e.VK_ENTER) {
                for (int i = 0; i < caixasTexto.length; i++) {
                    System.out.println(caixasTexto[0].getText());
                    if (caixasTexto[i].hasFocus()) {
                        if (++i >= caixasTexto.length)
                            i = 0;
                        caixasTexto[i].grabFocus();
                    }
                }
            }
        }

        public void keyReleased(KeyEvent e) {
        }
        
        
    }
    
}

não testei o codigo mas lendo ele parece que é isso mesmo…
ficou muito bom.

espero que o Victor de uma olhadinha.

T+