Event Handling KeyListener reagiert nicht

TheAnfänger

Mitglied
Hallo,
ich programmiere momentan ein kleines Spiel und habe folgendes Problem:
Wenn ich Escape drücke soll sich das Pausenmenü öffnen. Das funktioniert auch soweit und das Menü öffnet sich. Jetzt soll sich das Fenster bei erneutem Druck auf Escape wieder schliessen.
Das Problem liegt daran, dass die Funktionen keyPressed, keyReleased, etc. nicht aufgerufen werden.
Hätte jemand eine Idee?

Anzumerken wäre: Update wird aufgerufen, nur die anderen Methoden nicht.
Java:
public class KeyManager implements KeyListener {
  
    public boolean[] keys;
    public boolean[] previousKeys;
    public double[] keyTime;

    public KeyManager() {
        keys = new boolean[525];
        previousKeys = new boolean[525];
        keyTime = new double[525];
    }
  
    public void update() {
        for(int i=0; i<keys.length; i++) {
            previousKeys[i] = keys[i];
            if(keys[i]) {
                keyTime[i] += Vars.deltaTime;
            }
        }
    }

    @Override
    public void keyPressed(KeyEvent e) {
        keys[e.getKeyCode()] = true;
    }

    @Override
    public void keyReleased(KeyEvent e) {
        keys[e.getKeyCode()]= false;
        keyTime[e.getKeyCode()] = 0;
    }

    @Override
    public void keyTyped(KeyEvent e) {
      
    }
  
  
    /*    debug
    @Override
    public String toString() {
        return "Ich bins, der Keymanager";
    }
    //*/
}
Java:
public class Menu extends JPanel implements State {
  
    private static final long serialVersionUID = -9023306276547365993L;
    public static final String LEVEL_PATH = "rsc/levels/";
    public static final String IMAGE_PATH = "rsc/images/";
    private Color shader = new Color(0, 0, 0);

    public Menu() {
        super();
        this.setVisible(false);
        this.setFocusable(true);
        this.addKeyListener(Vars.keyManager);
    }

    @Override
    public void update() {
        if(Vars.keyManager.previousKeys[KeyEvent.VK_ESCAPE] && !Vars.keyManager.keys[KeyEvent.VK_ESCAPE]) {
            Start.actualState = Vars.game;
            Vars.game.stateChanged();
            System.out.println("JJJAAAA!!!");
        }
      
        if(Vars.keyManager.keys[KeyEvent.VK_W]) {
            System.out.println("Hallo aus Menu");
        }
      
        Vars.keyManager.update();
    }

    @Override
    public void render(Graphics2D g) {
        Color previousColor = g.getColor();
        g.setColor(shader);
        g.fillRect(0, 0, Vars.gui.getWidth(), Vars.gui.getHeight());
        g.setColor(previousColor);
    }

    @Override
    public void stateChanged() {
        GUI gui = Vars.gui;
        this.setPreferredSize(gui.canvas.getSize());
        gui.canvas.setVisible(false);
        this.setVisible(true);
        gui.add(this, BorderLayout.CENTER);
        //gui.pack();
        gui.repaint();
    }
  
    @Override
    protected void paintComponent(Graphics gmain) {
        super.paintComponent(gmain);
        Graphics2D g = (Graphics2D) gmain.create();
        Start.actualState.render(g);
    }

}
 

Yjuq

Mitglied
Hallo, mir würde spontan nur einfallen dass du schlichtweg vergessen hast eine Instanz deines KeyManager zu erstellen bzw. der Klassenvariable "Vars.keyManager" zuzuweisen. Sprich: Ich gehe davon aus dass du einen Null Pointer an addKeyListener() übergibst.

Allerdings bin ich mir da nicht zu 100% sicher da du deine Klasse "Vars" nicht mitgeliefert hast. Falls dir mein Tipp oben nicht geholfen hat lade doch bitte mal die Klasse noch hoch. :)

Edit: Ich hab mir deine beiden Codeabschnitte nochmal genauer angesehen. Ein Null Pointer kann das eigentlich nicht sein. Am besten lädst du mal dein ganzes Projekt gezippt hoch. Ich hab da eine Vermutung die sich auf ein Logikfehler ggf. zurückführen lassen könnte. Allerdings fehlen mir dafür weitere Informationen. Ansonsten bin ich ratlos :/

---

Hallo.

Einfach mal den Debugger anschmeißen. Oder zumindest println einbauen. So lernst du auch was.

Grüße

Solche Kommentare kannst du dir sparen. Das hilft dem Fragenden absolut nicht weiter wenn er scheinbar wohl selber den Fehler nicht weiter eingrenzen konnte. Das ist ja auch der Grund warum er uns um Hilfe bittet. Da finde ich solche Bemerkungen absolut Kontraproduktiv und stellst gleichzeitig den Threadersteller bloß. :mad:
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
Hallo.

Einfach mal den Debugger anschmeißen. Oder zumindest println einbauen. So lernst du auch was.

Grüße

Solche Kommentare kannst du dir sparen. Das hilft dem Fragenden absolut nicht weiter wenn er scheinbar wohl selber den Fehler nicht weiter eingrenzen konnte. Das ist ja auch der Grund warum er uns um Hilfe bittet. Da finde ich solche Bemerkungen absolut Kontraproduktiv und stellst gleichzeitig den Threadersteller bloß. :mad:
Sehe ich überhaupt nicht so. @truesoul hat da genau den richtigen Hinweis gegeben. Hilfe zur Selbsthilfe ist immer der beste Weg. Und falls der TE tatsächlich schon Ähnliches versucht haben sollte, sollte er auch Infos über die Ergebnisse liefern. Ansonsten geht man eben davon aus, dass in der Richtung noch nichts passiert ist.
 

TheAnfänger

Mitglied
Ich hab mir deine beiden Codeabschnitte nochmal genauer angesehen. Ein Null Pointer kann das eigentlich nicht sein. Am besten lädst du mal dein ganzes Projekt gezippt hoch. Ich hab da eine Vermutung die sich auf ein Logikfehler ggf. zurückführen lassen könnte. Allerdings fehlen mir dafür weitere Informationen. Ansonsten bin ich ratlos :/
Es ist auch kein Nullpointer. Wenn man genau hinschaut, sieht man in der KeyManagerklasse auch, dass ich die Methode toString überschrieben habe, um zu testen ob Menu den KeyListener auch wirklich zugewiesen bekommt.

Ich lade das Projekt bei Gelegenheit mal hoch. Bin jetzt gerade nicht an meinem Computer.
 

truesoul

Top Contributor
Solche Kommentare kannst du dir sparen. Das hilft dem Fragenden absolut nicht weiter wenn er scheinbar wohl selber den Fehler nicht weiter eingrenzen konnte. Das ist ja auch der Grund warum er uns um Hilfe bittet. Da finde ich solche Bemerkungen absolut Kontraproduktiv und stellst gleichzeitig den Threadersteller bloß

Also erstmal gehört der Debugger zu den üblichen Werkzeugen in der Entwicklung. Zweitens hat der TE in sein Ausgangsbeschreibung nicht erwähnt dass er diesen auch schon verwendet hat und folgerichtig ist mein Hinweis vollkommen in Ordnung, da es den Fehler eingrenzen kann.
Und drittens musst du mir erklären wie ich mit meiner Aussage in den TE bloßstelle?

Auch in Zukunft werde ich selber entscheiden, wie ich beitragen kann, anderen zu helfen. Auch wenn es dir nicht gefällt.

dass du einen Null Pointer an addKeyListener() übergibst.

Zeigst du mir bitte wie man einen NullPointer übergeben kann?

Allerdings bin ich mir da nicht zu 100% sicher da du deine Klasse "Vars" nicht mitgeliefert hast.

Also ist Vars jetzt ein NullPointer?

Ansonsten bin ich ratlos :/

Sieht ganz danach aus.

Mit freundlichen Grüßen

:D
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
P KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 11
A Keylistener reagiert nicht AWT, Swing, JavaFX & SWT 10
M AWT KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
C Swing KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 7
M KeyListener reagiert nach Buttondruck nicht mehr AWT, Swing, JavaFX & SWT 4
A JButton reagiert nicht auf KeyListener//Focuslistener AWT, Swing, JavaFX & SWT 4
G KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
T KeyListener reagiert seltsam bei F10 (Systemtasten?) AWT, Swing, JavaFX & SWT 5
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
A Event Handling Muss ich 'KeyListener' tasuend mal zufügen? AWT, Swing, JavaFX & SWT 7
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
X KeyListener AWT, Swing, JavaFX & SWT 0
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
Z SnakeGame Schlange per KeyListener bewegen! AWT, Swing, JavaFX & SWT 10
T KeyListener AWT, Swing, JavaFX & SWT 2
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
C KeyListener AWT, Swing, JavaFX & SWT 5
Doopy Event Handling KeyListener funktioniert nach Restart nicht mehr AWT, Swing, JavaFX & SWT 7
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
C Swing KeyListener in JPanel AWT, Swing, JavaFX & SWT 2
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
E Swing KeyListener implementieren AWT, Swing, JavaFX & SWT 12
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
T KeyListener AWT, Swing, JavaFX & SWT 4
R KeyListener in JWindow AWT, Swing, JavaFX & SWT 7
T BlueJ KeyListener AWT, Swing, JavaFX & SWT 7
Z KeyListener AWT, Swing, JavaFX & SWT 2
M Swing KeyListener in JTextfield AWT, Swing, JavaFX & SWT 4
C Swing KeyListener für JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 8
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
D Problem mit KeyListener AWT, Swing, JavaFX & SWT 2
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
L Snake in Java KeyListener Problem AWT, Swing, JavaFX & SWT 30
B "globaler" KeyListener? AWT, Swing, JavaFX & SWT 3
B JTable TableHeader KeyListener AWT, Swing, JavaFX & SWT 4
S Swing KeyListener und JList AWT, Swing, JavaFX & SWT 2
R KeyListener funzt nicht AWT, Swing, JavaFX & SWT 2
X KeyListener AWT, Swing, JavaFX & SWT 4
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
M Fokus für KeyListener AWT, Swing, JavaFX & SWT 9
V Problem mit KeyListener im Fullscreen-Modus AWT, Swing, JavaFX & SWT 2
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
F Tastenabfrage (KeyListener) AWT, Swing, JavaFX & SWT 2
D KeyListener Problem bei JPanel wechsel AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, requestFocus und KeyBindings AWT, Swing, JavaFX & SWT 8
E JFrame akzeptiert den KeyListener nicht AWT, Swing, JavaFX & SWT 3
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
L Problem mit KeyListener AWT, Swing, JavaFX & SWT 3
A KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 4
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
B KeyListener Strg+s AWT, Swing, JavaFX & SWT 5
D Globaler Keylistener AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
M KeyListener Problem unter Firefox AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
capgeti SWT KeyListener 2 Tasten Problem AWT, Swing, JavaFX & SWT 3
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
N JFrame und KeyListener AWT, Swing, JavaFX & SWT 6
A AWT Button verhindert ausführung vom Keylistener AWT, Swing, JavaFX & SWT 4
R KeyListener hinzufügen AWT, Swing, JavaFX & SWT 7
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben