Como ler do teclado, usando classe que não tem metodo addKeyListener?
10 respostas
Murilo_CIN
olá pessoal, estou com um problema: Quero ler comandos do teclado, porém minha classe extende “Window” de uma API chamada miniJava. O problema é que ela não possui o método addKeyListener ou semelhante. Existem maneiras simples de eu conseguir ler do teclado sem precisar mudar a classe que eu estou extendendo? Tem como eu criar um método que tenha a mesma função do addKeyListener?
mas vc não pode implementar a Interface KeyListener?
Agora vc precisa verificar se API implementa a Interfce KeyListener
Murilo_CIN
tem na documentação de Window:
All Implemented Interfaces:
ClickListener, ItemStateListener, Listener
Eu posso implementar KeyListener, mas eu acho que para conseguir fazer o que eu quero, eu precisaria de uma linha de código no construtor parecida com:
this.addKeyListener(this);
mas quando eu digito isso, o Eclipse diz que não existe esse método.
Eu queria que quando eu apertasse UP (arrow) acontecesse o mesmo que um click no Button “botao”.
importjava.awt.event.KeyEvent;importbr.ufpe.cin.miniJava.gui.Button;importbr.ufpe.cin.miniJava.gui.Component;importbr.ufpe.cin.miniJava.gui.Window;publicclassKeyboard04extendsWindow{Buttonbotao;intnum;Keyboard04(){num=0;this.botao=newButton("botao");this.include(botao,10,10);this.setSize(200,200);this.setVisible(true);//Acho que aqui deveria ter algo como: this.addKeyListener(outroAlgo);//O problema eh que Window nao tem o metodo addKeyListener}publicvoidclickEvent(Componentc){if(c==botao){this.setTitle(this.num+1+"");this.num+=1;}}publicvoidkeyPressed(KeyEvente){intkey=e.getKeyCode();if(key==KeyEvent.VK_UP){botao.doClick();}}publicstaticvoidmain(String[]args){newKeyboard04();}}
O meu problema eh nao entra nunca no KeyPressed, acho q por falta de um KeyListener na janela. Alguem consegue solucionar?
ramilani12
Murilo_CIN:
tem na documentação de Window:
All Implemented Interfaces:
ClickListener, ItemStateListener, Listener
Eu posso implementar KeyListener, mas eu acho que para conseguir fazer o que eu quero, eu precisaria de uma linha de código no construtor parecida com:
this.addKeyListener(this);
mas quando eu digito isso, o Eclipse diz que não existe esse método.
Pelo jeito vc esta uilizando a classe Window do pacote java.awt.WIndow mas vc precisa verifcar se essa classe br.ufpe.cin.miniJava.gui.Window implementa a Interface KeyListener
O que pode estar acontendo que compilador esteja referenciado do pacote java.awt e não br.ufpe.cin.miniJava.gui.Window
Murilo_CIN
ramilani12:
Murilo_CIN:
tem na documentação de Window:
All Implemented Interfaces:
ClickListener, ItemStateListener, Listener
Eu posso implementar KeyListener, mas eu acho que para conseguir fazer o que eu quero, eu precisaria de uma linha de código no construtor parecida com:
this.addKeyListener(this);
mas quando eu digito isso, o Eclipse diz que não existe esse método.
Ainda nao consegui fazer isso funcionar. Quem souber como resolver isso, por favor, me ajude. Isso eh muito importante pra mim. Com isso eu vou poder dar continuidade ao meu jogo que esta bem proximo de acabar. So falta conseguir mexer o “boneco” pelo teclado e outras coisinhas, mas esssas outras coisinhas ja estao sob controle. Preciso solucionar isso rapido, para acabar meu jogo antes do inicio das aulas, que comecam semana que vem.
ramilani12
Veja a documentacao essa classe não implementa a Interface keyListener
Então precisa implementa-la e os metodos keyReleased() , keyPressed() e keyTyped()
importjava.awt.event.KeyEvent;importbr.ufpe.cin.miniJava.gui.Button;importbr.ufpe.cin.miniJava.gui.Component;importbr.ufpe.cin.miniJava.gui.Window;publicclassKeyboard04extendsWindowimplementsKeyListener{Buttonbotao;intnum;Keyboard04(){num=0;this.botao=newButton("botao");this.include(botao,10,10);this.setSize(200,200);this.setVisible(true);this.botao.addKeyListener(this);// serao o botão que ira disparar o evento?}publicvoidclickEvent(Componentc){if(c==botao){this.setTitle(this.num+1+"");this.num+=1;}}publicvoidkeyPressed(KeyEvente){intkey=e.getKeyCode();if(key==KeyEvent.VK_UP){botao.doClick();}}publicstaticvoidmain(String[]args){newKeyboard04();}}
Murilo_CIN
Eu quero que quando eu pressionar UP (teclado) ocorra o evento do Button botao. O que eu nao sei eh fazer com que algo ocorra quando eu pressionar UP, qualquer algo. Nunca entra no metodo KeyPressed.
Ja tentei implementar KeyListener, mas continua na mesma. O problema ta na nao existencia de um metodo addKeyListener.
E a classe Button tambem nao tem o metodo addKeyListener, so tem addClickListener.