[Resolvido]Evento quando clicar tecla TAB no jtext

Eu estou usando o seguinte código mais não quer entrar no evento.

private void txt_Nome_ColaboradorKeyPressed(java.awt.event.KeyEvent evt) {                                                
        // TODO add your handling code here:
        if (evt.getKeyCode() == KeyEvent.VK_TAB) {
            System.out.println("aaaaa");
        }
    }
jTextField.addKeyListener(new KeyAdapter() {
        @Override
        public void keyTyped(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_TAB) {
                System.out.println("aaaaa");
            }
        }
});

Amigo boa tarde, dando uma pesquisada rápida no fórum encontrei isso
Saber se tecla tab foi pressionada
Como ela e usada para alterar entre campos o evento disparado vai ser na perda do foco e não na tecla pressionada.

@AntonioSantos eu tentei colocar esse código no construtor e no método que tinha citado acima e nenhum dos dois não funcionou

E com keyPressed:

       jTextField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_TAB) {
                    System.out.println("aaaaa");
                }
            }
        });

ola @JeffersonSO eu tentei fazer como no link que você me mandou e também não deu certo

@AntonioSantos eu coloquei no construtor eh coreto?
com TAB nao esta dando certo e com o ENTER imprimi “bbbb”

txt_Nome_Colaborador.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                System.out.println("bbbb");
                if (e.getKeyCode() == KeyEvent.VK_TAB) {
                    System.out.println("aaaaa");
                }
            }
        });

Se eu coloco naquele método ele com TAB também não imprime nada e com ENTER e Imprime 4x o “bbbb”

private void txt_Nome_ColaboradorKeyPressed(java.awt.event.KeyEvent evt) {                                                
        // TODO add your handling code here:
        txt_Nome_Colaborador.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                System.out.println("bbbb");
                if (e.getKeyCode() == KeyEvent.VK_TAB) {
                    System.out.println("aaaaa");
                }
            }
        });
    }

Testa assim então.

private void txt_Nome_ColaboradorKeyPressed(java.awt.event.KeyEvent evt) {
    if (evt.getKeyCode() == evt.VK_TAB) {
        System.out.println("aaaaa");
    }
}

Então @AntonioSantos eu usava um parecido tanto o seu quanto o meu não imprime o aaaaaa com o tab e se der enter imprime o bbbbb somente 1 vez

private void txt_Nome_ColaboradorKeyPressed(java.awt.event.KeyEvent evt) {                                                
        // TODO add your handling code here:
        System.out.println("bbbbbb");
        if (evt.getKeyCode() == evt.VK_TAB) {
            System.out.println("aaaaa");
        }
    }

@AntonioSantos talvez você consiga fazer oque eu quero fazer sem precisar de fazer esse método o que eu preciso e que quanto eu esteja naquela caixa de texto a hora que clicar no tab o focus vá para um botão.

Tenta isso:

   private void txt_Nome_ColaboradorKeyPressed(java.awt.event.KeyEvent evt) {                                                
        if (evt.getKeyChar() == evt.VK_TAB) {
            System.out.println("aaaaa");
        }
    }

Se quer fazer isso de forma simples e com evento faça assim:

textField.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
button.requestFocus();
}
@Override
public void focusGained(FocusEvent e) {}
});

1 curtida

Ou se nem for utilizar o focusGained pode utilizar um FocusAdapter invés da interface:

textField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
button.requestFocus();
}
});

o 1 caso que você me passou já funcionou e melhor usar ele ou o segundo que você acabou de passar?
o segundo também funcionou

Se for utilizar só o método focusLost pode utiizar o segundo mesmo, evita de sobrescrever explicitamente o segundo método como no primeiro caso.

Obrigado @Daniel95 mais uma vezes me ajudando e irei utilizar o segundo então

@Daniel95 deixa te perguntar eu necessitei fazer esse mesmo código mais 2 vezes sendo que 1 funcionou e outra não de 3 duas funcionou e outra não e o pior que ta sendo o bug se eu colocar um JOptionPane.showMessageDialog depois do botão ele funciona mais tenho que dar enter.

txt_descricao_Operacao.addFocusListener(new FocusListener() {
            @Override
            public void focusLost(FocusEvent e) {
                btn_Pesquisa_Operacao.requestFocus();
                 JOptionPane.showMessageDialog(null, "Excluído");
            }

            @Override
            public void focusGained(FocusEvent e) {
            }
        });

Se eu tiro ele o JOptionPane.showMessageDialog(null, “Excluído”); ele vai para outro txt ao invés do botão

Não entendi qual o problema e nem qual o objetivo.
Por favor explique o que ta acontecendo e o que você quer que aconteça e por que tem um JOptionPane aí?

Bom dia @Daniel95 eu justamnete nao quero que aconteça e passar o focus do txt_descricao_Operacao para o btn_Pesquisa_Operacao porem ele se eu faço o código certinho ele vai para outro txt_ID_Ordem_Producao e se caso eu coloco o JOptionPane apois chamar o focus para o botão dai funciona.
Eu tambem tentei colocar o focus em outro txt o txt_Quantidade para ver se ia e deu o mesmo erro e foi para o txt_descricao_Operacao.

Não entendi o que está acontecendo e nem o que você quer que aconteça, você disse que não quer que o Focus vá do JTextField ao JButton mas se você coloca um JOptionPane ele vai para o JButton? Mas você quer ou não que vá e pra onde?
Poste o código do que você fez e descreva o que está acontecendo e o que você quer que aconteça (Não o que você fez, mas o resultado que pretende obter).