Para definir fazer o ENTER ou SETAS mudar o foco do componente basta adicionar ao componente um evento chamado KeyListener, para isso crie uma classe que implementa KeyListener como a abaixo:
EnterKeyListener
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JComponent;
/**
* classe que tem como objetivo "ouvir" o ENTER e SETAS para enviar o foco para frente/atrás
* de componentes descendentes de JComponent
*/
public class EnterKeyListener implements KeyListener {
private boolean permitirSetas;
EnterKeyListener() {
this.permitirSetas = false;
}
// este construtor recebe um parametro que ativa ou não setas para enviar foco frente-trás
EnterKeyListener(boolean permitirSetas) {
this.permitirSetas = permitirSetas;
}
public void keyPressed(KeyEvent e) {
// se o componente é instancia de JComponent
if (e.getSource() instanceof JComponent) {
// pressionou ENTER? ou se as setas são permitidas, pressionou SETA PARA BAIXO?
if (e.getKeyCode() == KeyEvent.VK_ENTER || (permitirSetas && e.getKeyCode() == KeyEvent.VK_DOWN)) {
// se for um JButton e pressionou ENTER faremos o click
if (e.getSource() instanceof JButton && e.getKeyCode() == KeyEvent.VK_ENTER) {
((JButton)e.getSource()).doClick();
} else
((JComponent)e.getSource()).transferFocus(); // se não, apenas tranferimos o foco
}
// SETA PARA CIMA, manda o foco para "trás"
if (permitirSetas && e.getKeyCode() == KeyEvent.VK_UP) {
((JComponent)e.getSource()).transferFocusBackward();
}
}
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
Exemplo de uso
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Geral extends JFrame {
private JFieldText campo1;
private JFieldText campo2;
public Geral() {
setSize(200, 110);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
campo1 = new JFieldText(7);
campo2 = new JFieldText(10);
add(campo1);
add(campo2);
// aqui associamos os eventos enter
campo1.addKeyListener(new EnterKeyListener());
campo2.addKeyListener(new EnterKeyListener());
setVisible(true);
}
public static void main(String[] args) {
new Geral();
}
}