Validar campo e mudar o foco do JTextField [RESOLVIDO]

Olá pessoal!

Preciso que, ao pressionar “ENTER” verifique se o campo está vazio (se estiver mostrar uma mensagem) se não mudar o FOCO para o campo seguinte.

Olhando os tópicos, encontrei o seguinte código

link: http://www.guj.com.br/java/252653-jtextfield—enter—proximo-foco

//Autor: fernandopaiva public void passaCamposComEnter(JPanel painel){ // Colocando enter para pular de campo HashSet conj = new HashSet(painel.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); conj.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0)); painel.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, conj); }
Esse código realmente funciona, mas não consigo validar os campos se estão vazios, pois quando crio o evento para verificar, não funciona, é como se esse método sobrescrevesse o evento

Criei o evento assim:

jTextField.addKeyListener(new java.awt.event.KeyAdapter(){ public void keyPressed(KeyEvent evt){ if(evt.getKeyCode() == KeyEvent.VK_ENTER){ if(jTextField.getText().equals("")){ JOptionPane.showMessageDialog(null, "Campo inválido"); } } } });
O estou chamando o método passaCamposComEnter ao criar meu JFrame.

Gostaria de criar algo que fosse global, para que eu possa utilizar em todos os frame que criar.

Se alguém poder me ajudar, ficarei grato.

Eu geralmente faço assim:

jtextfield.addActionListener(new ActionListener(){ @Override public void ActionPerformed(ActionEvent e){ if(jtextfield.getText().isEmpty()){ JOptionPane.showMessageDialog(null, "Inválido", "Erro", JOptionPane.ERROR_MESSAGE); } else { //Passou na validação //Faz algo aqui } } });

Vi agora que também tinha que passar o foco para o próximo componente!

Tente assim:

jtextfield.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ if(jtextfield.getText().isEmpty()){ JOptionPane.showMessageDialog(null, "Inválido", "Erro", JOptionPane.ERROR_MESSAGE); } else { //Passou na validação - passa o foco KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager(); manager.focusNextComponent(); } } });

Vlw silasyudi !

É exatamente que preciso…

Já testei e deu certo.

Obrigado