Я учусь кодировать ввод с клавиатуры с помощью keylistener. Я понял, что работает со следующей программой:
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class KeyboardInput extends JFrame implements KeyListener {
public KeyboardInput(String s) {
super(s);
JPanel panel = new JPanel();
JLabel label = new JLabel();
panel.add(label);
add(panel);
addKeyListener(this);
setSize(200, 100);
setVisible(true);
}
public void keyTyped(KeyEvent event) {
KeyEvent e = event;
switch(e.getKeyCode()) {
case java.awt.event.KeyEvent.VK_A: System.out.println("A");
case java.awt.event.KeyEvent.VK_D: System.out.println("D");
case java.awt.event.KeyEvent.VK_S: System.out.println("S");
case java.awt.event.KeyEvent.VK_W: System.out.println("W");
case java.awt.event.KeyEvent.VK_SPACE: System.out.println("Space");
}
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_0) {
System.out.println("0");
}
}
public void keyPressed(KeyEvent event) {
if(event.getKeyCode() == java.awt.event.KeyEvent.VK_W) {
System.out.println("W");
}
}
public void keyReleased(KeyEvent e) {
// nothing yet
}
}
public class Core {
public static boolean isRunning = true;
public static void main(String args[]) {
new KeyboardInput("Keyboard Input Testing");
}
}
К сожалению, есть одна большая проблема: пока работают события keyPressed, а события keyTyped - нет. Это ошибка в моем коде, или это может быть из-за неисправной клавиатуры?
Дополнительный уточняющий вопрос, который у меня возникает, заключается в том, почему KeyboardInput инициализируется в основном классе, инициализированном без объявления?