Ich war in der Mitte der Erstellung eines Low-Level-Spiel, das Schlüsseleingabe erfordert. Wie üblich importierte ich die Bibliotheken KeyListener
und KeyEvent
. Ich habe die drei erforderlichen Methoden erstellt: keyPressed
, keyReleased
, . Dann fügte ich der Klasse "testJPanel" einen keyListener
hinzu und in der keyPressed
Methode erstellte ich einen switch
, um zu überprüfen, ob eine bestimmte Taste gedrückt wurde oder nicht. Wie bei den Methoden keyReleased
und habe ich beschlossen, sie leer/leer zu lassen. Für mich scheint alles in Ordnung und Dandy aber Java
scheint nicht meine Tastatureingaben zu registrieren: wenn ich die Pfeiltaste nach oben drücke, sollte das Programm "Test" drucken, aber leider tut es das nicht. Warum ist das? Jede und jede Hilfe würde geschätzt werden.Eingabe von KeyListener wird nicht erkannt
testJFrame.java
import java.awt.Color;
import javax.swing.JFrame;
public class testJFrame extends JFrame {
public testJFrame() {
setTitle("A test application");
setSize(500, 500);
setBackground(Color.black);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setFocusable(true);
add(new testJPanel());
}
public static void main(String[] args) {
testJFrame testJFrame = new testJFrame();
}
}
testJPanel.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class testJPanel extends JPanel implements KeyListener, ActionListener {
public testJPanel() {
Timer timer = new Timer(15, this);
timer.start();
addKeyListener(this);
}
public void update() {
}
@Override
public void actionPerformed(ActionEvent a) {
update();
}
@Override
public void keyPressed(KeyEvent k) {
switch(k.getKeyCode()) {
case KeyEvent.VK_UP:
System.out.println("Test");
}
}
@Override
public void keyReleased(KeyEvent k) {
}
@Override
public void keyTyped(KeyEvent k) {
}
}