Escutar Eventos de Teclado

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.

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.

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

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.

Nem sempre.

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)

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

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.

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

[quote=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…)?[/quote]

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

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.