KeyListener funkioniert nicht

Battleju

Aktives Mitglied
Hi,
ich bin gerade an einem Projekt und brauche einen KeyListener. Ich weiß nicht wieso aber ich habe immer irgend ein Problem damit😡.

Code:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class KeyManager implements KeyListener{

    @Override
    public void keyTyped(KeyEvent e) {
          int keyCode = e.getKeyCode();
            switch (keyCode) {
            case KeyEvent.VK_UP:
                System.out.println("UP");
                break;
            case KeyEvent.VK_DOWN:
                System.out.println("DOWN");
                break;
            case KeyEvent.VK_LEFT:
                System.out.println("LEFT");
                break;
            case KeyEvent.VK_RIGHT:
                System.out.println("RIGHT");
                break;
            default:
                break;
            }
    }

    @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
       
    }

}
Das ist die Klasse in der mein KeyListener ist.

Code:
public Display(Snake world) {
        frame = new JFrame();
        this.world = world;
        frame.setTitle("Snake");
        frame.setLocationRelativeTo(null);

        raster = new JLabel[world.getXlength()][world.getYlength()];
        for (int i = 0; i < raster.length; i++) {
            for (int j = 0; j < raster[i].length; j++) {
                raster[i][j] = new JLabel("");
                raster[i][j].setBorder(BorderFactory.createBevelBorder(0));
                raster[i][j].setPreferredSize(new Dimension(32, 32));
            }
        }
        JPanel panel = new JPanel(new GridLayout(world.getXlength(), world.getYlength(), 0, 0));
        for (int i = 0; i < raster.length; i++) {
            for (int j = 0; j < raster[i].length; j++) {
                JPanel p = new JPanel();
                raster[i][j].setBackground(Color.white);
                p.add(raster[i][j]);
                panel.add(p);
            }
        }
        frame.addKeyListener(new KeyManager());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }
Hier im Konstruktor wird der KeyListener hinzugefügt.

Aber warum wird in der Konsole beim betätigen der Tasten nichts ausgegeben?
Könnte mir jemand weiterhelfen und mir sagen was ich wieder vergessen habe?😵

lg bttl
 
Es müsste klappen wenn du dass ins keyPressed() setzt: (vielleicht musst du dem Fenster auch noch den Focus geben mit setFocusable(true).

Java:
int keyCode = e.getKeyCode();
            switch (keyCode) {
            case KeyEvent.VK_UP:
                System.out.println("UP");
                break;
            case KeyEvent.VK_DOWN:
                System.out.println("DOWN");
                break;
            case KeyEvent.VK_LEFT:
                System.out.println("LEFT");
                break;
            case KeyEvent.VK_RIGHT:
                System.out.println("RIGHT");
                break;
            default:
                break;
            }

Edit:
Mit KeyTyped() funktioniert es auch so, aber nur bei darstellbaren Zeichen(also bei Pfeiltasten nicht).

Java:
@Override
    public void keyTyped(KeyEvent e) {
        if(e.getKeyChar() == 'w'){
            System.out.println("w");
        }  
    }
 
Zuletzt bearbeitet:

Zurück
Oben