Estou colocando um KeyListener numa JApplet, aparentemente achei que estava correto, mas não está recuperando os eventos do teclado.
publicclassMinhaAppletextendsJAppletimplementsKeyListener{...publicvoidinit(){...// adiciona a classe como listener de eventos do teclado.addKeyListener(this);// requisita foco this.requestFocus();}...publicvoidkeyPressed(KeyEvente){System.out.println("K");}publicvoidkeyReleased(KeyEvente){System.out.println("R");}publicvoidkeyTyped(KeyEvente){System.out.println("T");}}
bom, meu conhecimento eh extremamente limitado, entao posso estar falando besteira, mas nao custa tentar…
aqui:
addKeyListener(this);
o certo nao seria:
algumacoisa.addKeyListener(this);
desculpa se falei besteira
Luiz_Aguiar
Fiz uma outra classe de teste… e o que acontece agora é o seguinte, quando eu clico dentro, ai o teclado é cpturado, ou seja, recebe o focus e funciona, não to conseguindo agora fazer o focus ir automático, pra qdo iniciar já conseguir capturar o teclado.
seuComponente.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
// codigo ação a ser realizada
}
});
Acho que e isso que vc precisa .
abraço
Luiz_Aguiar
Cara ele não me da a opção de adicionar um ActionListener num objeto JPanel.
Imagina o seguinte, 4 JPanel, 1 deles ter o Listener pra pegar a tecla CTRL, ou a JApplet toda ter esse Listener.
Como axa que daria pra fazer isso?
hvidal
Oi Luiz,
Não fiz o teste, mas tenta chamar setFocusable(true) antes de chamar o requestFocus().
Abraços,
Hugo.
Luiz_Aguiar
havia feito este teste antes tbm, e o fiz novamente, mas tbm não “pega” o foco até clicar no JPanel.
Teria uma outra solução mais “bonita” pra esse caso? trocar JPanel por alguma coisa?
hvidal
Oi Luiz,
Então temos que usar armamentos pesados agora.
Crie uma implementação para a interface KeyEventDispatcher e adicione ela como listener do KeyboardFocusManager: