Como tratar eventos do teclado

Boa Tarde Pessoal…
Estou com o seguinte problema: Eu estou desenvolvendo uma aplicação tipo um controle de estoque.
Na Tela de saida de materiais eu tenho um jTextField para codigo do material. Eu quero fazer com que, quando o usuário digitar o codigo do produto e apertar a tecla [Enter] tenha um evento que verifique se há esse codigo cadastrado no banco de dados. Se o resultado da comparação for verdadeiro eu quero que a descrição referente a esse produto seja adicionado em um segundo jTextField…

Será se alguém pode me ajudar nesse problema. Pois eu não sei como tratar esses eventos do teclado e do mouse.

Você quer que a tecla ENTER seja correspondente a você clicar um botão OK na sua tela?

Crie um botão OK (ou Confirmar) na sua tela

Pegue seu JFrame, obtenha o JRootPane correspondente, e então chame o método setDefaultButton para associar o botão ao ENTER.

A seguir, associe um evento ao botão OK usando addActionListener.

setDefaultButton

Valeu thingol por se disponibilizar em me ajudar.
Mas eu não entendi o que seria e como obter o JRootPane.
vc pode me explicar melhor, se possivel?

Na classe JFrame existe o método getRootPane(). Era isso que eu queria dizer.

JTextField campoTexto = new JTextField(); campoTexto.addKeyListener(new KeyListener(){ public void keyPressed(KeyEvent e) {} public void keyReleased(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER){ // Processa o dado } } public void keyTyped(KeyEvent e) {} });
Alternativamente…

JTextField campoTexto = new JTextField(); campoTexto.addKeyListener(new KeyAdapter(){ public void keyReleased(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER){ // Processa o dado } } });

Valeu Fox McCloud pela sua resposta.
Uma Pergunta: O que faz o método keyReleased
E qual a diferença entre KeyListener() e KeyAdapter() ?

[quote=Ricelli Martins]Valeu Fox McCloud pela sua resposta.
Uma Pergunta: O que faz o método keyReleased
E qual a diferença entre KeyListener() e KeyAdapter() ?[/quote]
Você tem três métodos que representam três eventos de tecla, explicados abaixo:

public void keyPressed(KeyEvent e) {} // Quando uma tecla é pressionada

public void keyReleased(KeyEvent e) {} // Quando uma tecla é solta

public void keyTyped(KeyEvent e) {} // Quando uma tecla é pressionada e solta rapidamente

A diferença entre o KeyListener e o KeyAdapter é que o KeyListener é uma interface com as assinaturas dos métodos, o KeyAdapter é uma classe abstrata com os métodos vazios.

Quando você implementa uma interface é obrigado a implementar todos os seus métodos.

Quando você extende uma classe abstrata deve implementar apenas os métodos abstratos, e pode sobrescrever os demais métodos (que é o nosso caso), o que te dá a liberdade de colocar apenas os eventos que você quer no seu adaptador.

Quando você faz campoTexto.addKeyListener(new KeyAdapter(){ /***/ }); você não está instanciando KeyAdapter, o mesmo se aplica a KeyListener, até porque é impossível instanciar uma interface.

Na verdade você está criando uma classe interna anônima (anonymous inner class) que extende KeyAdapter ou implementa KeyListener, dependendo de qual dos dois você escolheu… e você tem a liberdade de colocar o que você quiser dentro dessa nova classe interna anônima.

Isso é utilizado para facilitar a criação de utilidades (como um listener, que vai monitorar os eventos do seu componente, o campo de texto, no caso) sem a necessidade de criar classes separadas ou mesmo identificadas, já que a única função dessa implementação vai ser monitorar o campo específico ao qual a classe foi associada como listener…

Fox McCloud, valeu… pela sua ajuda cara. Você me ajudou e muito postandoisso ai. Vou procurar pesquisar m+ sobre interface e classe abstrata. Vc sabe de algum tutorial que explica mais sobre isso?

Agradeço por sua ajuda.

[quote=Ricelli Martins]Fox McCloud, valeu… pela sua ajuda cara. Você me ajudou e muito postandoisso ai. Vou procurar pesquisar m+ sobre interface e classe abstrata. Vc sabe de algum tutorial que explica mais sobre isso?

Agradeço por sua ajuda.[/quote]
Disponha. Eu fiz isso porque percebi que você está realmente querendo aprender, não apenas copiar um código pronto sem compreendê-lo.

Olha, é interessante você estudar a respeito de orientação a objetos, que contém os conceitos de interface e classe abstrata, estudar Swing (a interface gráfica do Java), que vai te dar os conceitos de listeners (monitores de eventos), e estudar o conceito de classes internas (muito utilizadas também em Threads e outros conceitos, mas isso ainda é avançado pra quem está começando).

Se você está começando, uma leitura da qual eu gosto bastante é o Deitel de Java, 6ª edição, ele aborda todos esses assuntos iniciais importantes, conseguindo chegar até um nível intermediário. Você pode pular os conceitos que já conhece e começar em orientação a objetos, por exemplo.

É um livro muito didático que explica cuidadosamente o porquê de cada coisa em Java.

Depois, quando você já estiver dando os seus passos sozinho em Java, você pode estudar cuidadosamente o próprio livro para certificação Java, da Kathy Sierra, que aborda cada assunto importante de uma maneira mais completa, te dando muitas ferramentas importantes para solucionar problemas diferentes no mercado de trabalho.

Claro que esse é só o começo, mas começando bem você já aproveita e obtém a certificação de programador Java 6, por que não? Não é difícil com dedicação, e depois você poderá começar a estudar coisas mais avançadas, como o desenvolvimento web, com seus frameworks, persistência em bancos de dados (iniciando por JDBC e seguindo com frameworks de persistência), e você já estará bem para dar os seus passos iniciais no mundo do desenvolvimento pra valer.

Fox McCloud, Eu te agradeço por tudo que vc postou referente ao meu tópico, e também por está me incentivado e me apoiando a entrar de cabeça no aprendizado dessa Linguagem. Foi muito bom ter conversado contigo cara, essa conversa me inspirou a aproveitar agora às férias da Faculdade do meu trabalho pra estudar m+…

Valeu até a próxima…

Aproveita mesmo. Esse país tá precisando de gente que trabalha entendendo (de verdade) o que está fazendo, esse é um grande diferencial sobre os caras que saem só fuçando…

E qualquer dúvida que você tenha poste no GUJ ou me mande uma mensagem privada. Postar no fórum é mais legal porque pode ajudar a sanar a dúvida de mais pessoas!

Boa sorte, vai fundo, e não desista se houver alguma dificuldade!

:wink: