Escutar Eventos de Teclado

10 respostas
Eder_Peixoto

Olá pessoal!

Tenho uma aplicação onde implemento um Window, e nele desenho via Graphics.

Só que preciso ficar escutando eventos que venham do teclado. Por acaso alguém sabe de alguma classe que permita que eu fique ouvindo esses eventos? O que eu quero não é referente ao Scanner ou inclusão de ouvintes num Component via addKeyListener(), pois não possuo nenhum componente.

10 Respostas

E

Se a Window foi inserida em um Frame, Dialog ou seja lá o que for, você precisa escutar esses eventos no Frame, Dialog, ou seja lá o que for.

Eder_Peixoto

Minha Window não está inserida em nenhum Container.

E

Uma Window não existe sozinha. Como eu disse (isso está escrito no Javadoc de java.awt.Window),

Satisfeito?

Por isso, você precisa adicionar o evento de escuta de eventos no frame ou dialog em que o Window está definido.

Eder_Peixoto

Nem sempre.

E

Hum, não tinha visto que uma java.awt.Window é um java.awt.Component, e como tal, tem um método addKeyListener.

Desculpe

http://java.sun.com/javase/6/docs/api/java/awt/Component.html#addKeyListener(java.awt.event.KeyListener)

ViniGodoy

Sempre sim, Eder. A sun te deixa criar uma Window orfã para que você possa inicializa-la. Mas para exibi-la e capturar eventos sobre ela, você acabará tendo que associa-la a um JFrame ou JDialog.

Aliás, por que você está usando uma classe da AWT para fazer desenho? Não seria melhor usar o Swing?

E você possui um componente, a própria window. Pode fazer this.addKeyListener()

Eder_Peixoto
Window window = new Window( (Window)null );
window.setBounds( x, y, width, height);
window.setVisible( true );

Isso apresenta uma Window, e aparentemente é órfã (informei null no construtor). Ou estou errado?

Nenhum motivo em especial. Apenas curiosidade.

Já tentei, mas não escuto nenhum evento do teclado.

Eder_Peixoto

Entanglement e Vini:

E se eu tiver um programa sem nenhuma Window. Tem como eu ficar escutando o teclado (não é para fins maliciosos, he, he…)?

ViniGodoy

Eder Peixoto:
Entanglement e Vini:

E se eu tiver um programa sem nenhuma Window. Tem como eu ficar escutando o teclado (não é para fins maliciosos, he, he…)?

Que eu saiba, só através de JNI ou JNA.

E

Sem contar que no Windows Vista ou 7, usar um hook de teclado normalmente não funciona direito. Um exemplo disso é um programa VB que use o método Sendkeys; normalmente esses programas não funcionam mais nessas versões do Windows. Isso foi feito por motivos de segurança.

Criado 13 de junho de 2010
Ultima resposta 14 de jun. de 2010
Respostas 10
Participantes 3