regis_hideki, é simples, vou explicar melhor o que quero.
Suponhamos que eu crie um formulário com 3 campos (JTextField), 3 botões (Gravar, Limpar e Cancelar).
1º campo será o nome do cliente
2º campo será o CPF
3º campo será uma descrição
1º botão gravar no banco de dados
2º botão limpar os campos do formulário
3º botão encerra o cadastro e fecha o formulário
Todos os campos ao pressionar ENTER o foco passa para o próximo campo. Os campo nome e CPF não podem estar vazios, se pressionar ENTER e estiverem vazios é exibido uma mensagem de ERRO “O preenchimento do campo é obrigatório” e o foco continua no campo [mas o foco não fica preso, podendo passar o foco através do clique], se não estiver vazios o foco passa para o próximo campo. O campo descrição não possui restrição podendo estar vazio, ao pressionar ENTER o foco passa para os botões.
Agora vamos simula um cadastro:
Clico no ícone do programa principal e abre a tela de Cadastro de Cliente.
1 - Eu digito o nome do cliente e pressiono ENTER, o foco passa para o campo CPF
2 - Ao digitar o CPF o cliente se esqueceu e não possui o documento em mãos. Então clico no botão Cancelar para encerrar e fechar a tela de cadastro. Mas o evento FocusListener não deixa o foco sair do campo CPF enquanto ele não for preenchido [isso não é legal].
Quero que o TAB faça as mesmas validações que o ENTER, não quero prender o foco no campo, quero que ao pressionar ENTER ou TAB um evento seja disparado para validar os campos.