Estou colocando um KeyListener numa JApplet, aparentemente achei que estava correto, mas não está recuperando os eventos do teclado.
public class MinhaApplet extends JApplet implements KeyListener {
...
public void init() {
...
// adiciona a classe como listener de eventos do teclado.
addKeyListener(this);
// requisita foco
this.requestFocus();
}
...
public void keyPressed(KeyEvent e) {
System.out.println("K");
}
public void keyReleased(KeyEvent e) {
System.out.println("R");
}
public void keyTyped(KeyEvent e) {
System.out.println("T");
}
}
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.
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.JApplet;
public class Teste extends JApplet implements KeyListener {
private static final long serialVersionUID = 1598859838481954927L;
private JPanel jContentPane = null;
public static void main(String[] args) {
new Teste();
}
public Teste() {
super();
}
public void init() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
addKeyListener(this);
this.requestFocus();
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
}
return jContentPane;
}
public void keyPressed(KeyEvent e) {
System.out.println("P");
}
public void keyReleased(KeyEvent e) {
System.out.println("R");
}
public void keyTyped(KeyEvent e) {
System.out.println("T");
}
public boolean isFocusable() {
return true;
}
}
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.