У меня проблемы с KeyListener. Я добавляю KeyListener в JPanel, который я создаю, но KeyListener не работает.
Мой код для основного класса
package client;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class KeyTest {
public static KeyboardEvents keyEvents;
public static void main(String[] args) {
JFrame frame = new JFrame("KeyTest");
JPanel panel = new JPanel();
panel.setFocusable(true);
panel.requestFocus();
panel.addKeyListener(keyEvents);
frame.add(panel);
frame.setSize(new Dimension(640,480));
frame.setVisible(true);
}
}
Мой код для класса KeyboardEvents
package client;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.HashMap;
import java.util.Map;
public class KeyboardEvents implements KeyListener {
Map<Integer, Integer> keyMap;
public KeyboardEvents() {
initiate();
}
public void initiate() {
keyMap = new HashMap<Integer, Integer>();
}
public void keyPressed(KeyEvent e) {
keyMap.put(new Integer(e.getKeyCode()), new Integer(keyMap.size()));
System.out.println(e.getKeyCode());
}
public void keyReleased(KeyEvent e) {
keyMap.remove(e.getKeyCode());
}
public void keyTyped(KeyEvent e) {
}
public boolean keyDown(int key) {
return keyMap.containsKey(key);
}
public Integer[] getKeys() {
Object[] keys;
keys = keyMap.keySet().toArray();
Integer[] c = new Integer[keys.length];
for(int i = 0; i < keys.length; i++)
{
c[i] = (Integer) keys[i];
}
return c;
}
}
Мой класс KeyboardEvents всегда работал для меня. Я не могу понять, почему это не сработает сейчас.