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…
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…
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
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
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…
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