Como faço para saltaer :?: entre componentes de uma janela (textfield, buttons, choices) usando ENTER ao invés de TAB
Wagner, o esquema nao eh muito complicado, apesar de eu ter ficado um bom tempo pesquisando. O esquema eh assim:
-
Existe uma interface chamada KeyListener, a qual define metodos para a manipulacao de eventos de teclado nos componentes.
-
Voce precisara usar o metodo keyPressed da interface KeyListener para manipular os caracteres.
-
O codigo do enter eh VK_ENTER, o qual esta definido na classe KeyEvent.
-
Para passar o focus para o proximo componente, eh necessario usar o metodo getComponent disponivel em KeyEvent.
-
Por final, basta chamar o metodo transferFocus() da classe Component.
Abaixo tem o codigo necessario para isso funcionar ( note que algumas coisas voce devera implementar, caso deseje outras funcionalidaes. )
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.Component;
// ...
class MinhaClasse implements KeyListener
{
// ....
JTextField meuField = new JTextField();
// voce precisa chamar addKeyListener(this) para cada
// componente que quiser manipular. No caso, eh um
// JTextField
// Note que voce deve chamar isso em um lugar apropriado,
// aqui apenas coloquei como exemplo
meuField.addKeyListener(this);
// Agora eh necessario implementar keyPressed
public void keyPressed(KeyEvent ke)
{
if (ke.getKeyCode() == ke.VK_ENTER) {
// Pega o componente de onde veio o evento
Component c = ke.getComponent();
// transfere o foco para o proximo componente
c.transferFocus();
c = null;
}
}
// Esses 2 abaixo sao apenas para o compilador nao xiar
public void keyTyped(KeyEvent ke)
{
}
public void keyReleased(KeyEvent ke)
{
}
}
Pronto!! basicamente eh isso. Para maiores informacoes eh bom voce consultar a API referente a cada parte, pois tem muitos metodos interessantes.
http://www.guj.com.br/api/j2se.html?api=java.awt.event,KeyEvent
http://www.guj.com.br/api/j2se.html?api=java.awt.event,KeyListener
http://www.guj.com.br/api/j2se.html?api=java.awt,Component
[]'s
Rafael Steil
apenas uma colocacao
pessoal, o Rafael levou um bom tempo para ver todas as possibilidades e tal, de como fazer isto que o Wagner perguntou!! Ele ta pirando!
Bem
tambem acho essa a solucao mais viavel!
Muito bom!
Funcionou mesmo Rafael.
Tinha pensado em algo assim mas não sabia como implementar.
Thanks!
O Rafael mandou muito bem realmente ! Parabéns !
Por estas e outras o GUJ faz a diferença !