Saber se tecla Tab foi pressionada

Como saber se a tecla TAB foi pressionada? Eu tento capturar a tecla TAB, mas parece que ela não é reconhecida. Já tentei os três métodos KeyListener (pressed, released e typed), mas eles não conseguem capturar a tecla.

Alguém já conseguiu ver se a tecla TAB foi pressionada?

Posta seu código que fica mais fácil de olhar…

O código abaixo eu tava usando só para verificar a tecla digitada, mas a tecla tab é a única que não passa pelos métodos:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JOptionPane;

public class TesteTab implements KeyListener {
	
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		JOptionPane.showMessageDialog(null, "1: "+KeyEvent.getKeyText(e.getKeyCode()));
		
	}

	public void keyReleased(KeyEvent e) {
		JOptionPane.showMessageDialog(null, "2: "+KeyEvent.getKeyText(e.getKeyCode()));
		// TODO Auto-generated method stub
	}

	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		JOptionPane.showMessageDialog(null, "3: "+KeyEvent.getKeyText(e.getKeyCode()));
		
	}
}

Eu chamo o código pelo jTextField:

A tecla ALT é uma tecla modificadora. Não sei como se você pode capturar-la sozinha. Mas é possível ver se ela foi pressionada em combinação com outra (ou outras) pelo método getModifiers() que retorna um int.

Tente colocar:

Em algum dos métodos do seu código para ver o que retorna.

Daí dá pra fazer algo como:

if (e.getModifiers == ActionEvent.ALT_MASK) { ... }

Mais em: http://download.java.net/jdk6/docs/api/java/awt/event/ActionEvent.html

Estranho mesmo o tab não ser reconhecido.

Se alguém souber o por que, posta ai…

Valeu…

[quote=diego2005]Estranho mesmo o tab não ser reconhecido.

Se alguém souber o por que, posta ai…

Valeu…[/quote]

Tem que colocar isso antes:

MeuTextField.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET);

dai vc conseguirá capturar a tecla,

porem vc terá que escrever manualmente o evento de mudança de foco em um Listener de KeyPress em cada JTextField.


MeuTextField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                MeuTextFieldKeyPressed(evt);
            }
        });

private void MeuTextFieldKeyPressed(java.awt.event.KeyEvent evt) {                                         
       if (evt.getKeyCode() == KeyEvent.VK_ENTER || 
           evt.getKeyCode() == KeyEvent.VK_TAB)  {

              MeuTextField.transferFocus();
       }
    }     

Bom dia pessoal, tudo bem?

Eu consegui capturar a tecla TAB através das dicas a cima.

Criar um frame com um Jtextfield básico para testar.

Segue o código:

private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) { jTextField1.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET); JOptionPane.showMessageDialog(null, "2: "+KeyEvent.getKeyText(evt.getKeyCode())); }

Abraço

Olá FredericoButzke,

estou com o mesmo problema que vc estava antes referente a captura do TAB, não entendi muito bem sua resolução, poderia me ajudar?

Segue meu código abaixo:

    private void tfPreçodeFabrica(java.awt.event.KeyEvent evt) {

        if (evt.getKeyCode() == KeyEvent.VK_TAB){            
            
           System.out.print("TAAABBB"); 
           
     
            
            tfValorCompra.setText(Integer.toString(7));

        }
}

A tecla TAB é processada antes do tratamento de KeyPressed, portanto você não consegue tratá-la do jeito que você mostrou. Ela é tipicamente usada para mudar de um campo para o outro, portanto o tratamento é o da perda de foco, não o de KeyPressed.