Evento de Teclado

4 respostas
I

Quando uso o KeyListener ele retorna o código da tecla pressionada… com exeção do TAB alguém sabe como capturar o evento da tecla TAB?

valeu…

4 Respostas

dukejeffrie

C já tentou ver no look and feel?? Provavelmente, todos os componentes compartilham um actionmap para a tecla tab. Vc só tem que mudar, no action map, qual a ação que ele tem que executar quando a TAB for pressionada.

Vc pode criar uma Action estendida fazendo um código parecido com esse:

public  class ActionFilter implements Action {
    protected Action delegate;
    public ActionFilter(Action delegate) {
      this.delegate = delegate;
   }
   public void actionPerformed(ActionEvent e) {
    boolean consumed = doFilter(e);
    if (!consumed) { //event not processed
      if (delegate != null) delegate.actionPerformed(e);
    }
  }
  public  boolean doFilter(ActionEvent e) {
    // por default, não filtra nada.
    return false;
  }
}

O retorno booleano diz se vc consumiu o evento (e portanto, não é necessário fazer mais nada) ou se ele deve continuar sendo processado.

Aí, vc pode pegar a Action que está atualmente associada ao TAB (não faço idéia de como fazer isso) e passar no construtor do seu filtro:

ActionFilter filter = new ActionFilter (tabAction) {
      public boolean doFilter(ActionEvent evt) {
        meuMetodo();
        return false; // continua
      }
   };
  component.getActionMap().put("TAB", filter);

Repare que do jeito que eu exemplifiquei, ele vai executar a sua função e depois vai executar a função padrão , que move o foco para o próximo componente.

Nem sei se isso compila, é só pra dar uma idéia. Se funcionar, me avisa!! : )))

[]s do duke

richardpeder

Vc pode tb simplificar isto no keyListener…não sei se vc sabe, mas existe uma forma de o java entender as teclas que esta digitando…não me lembro agora, mas em minha empresa usamos isso…irei ver depois te falo ok?!

ate mais

richardpeder

Isaac:

Conforme prometi, aqui vai o codigo do evento de TAB:

<nome do componente>.addKeyListener(new KeyAdapter()
{
    public void keyPressed(KeyEvent evt)
    {
        int intKey = evt.getKeyCode();
        if (intKey == KeyEvent.VK_TAB)
        {
            <bloco de comandos>
         }
    }
});

Ate mais…

Mus4shi

Já que é o mesmo assunto, vou aproveitar o tópico.

Pessoal estou querendo colocar um tratamento de teclado em uma calculadora que estou fazendo, mas não acho o código do operador de divisão ( “/” ).
Alguém sabe qual é ?

Obrigado

Criado 11 de fevereiro de 2003
Ultima resposta 20 de nov. de 2008
Respostas 4
Participantes 4