KeyListener not reaching my switch statement

java, keylistener, swing

Solution

`KeyListener` will only fire events if the component it is registered is focusable and has focus.

`JApplet` has a `JRootPane` which adds a `JLayeredPane` and content pane (amongst other things) ontop of the applet, which may mean that key listener may never be capable of begin notified of events (as other elements are blocking it).

Instead, use Key Bindings

Problem

I have this code: ``` import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JApplet; public class applet extends JApplet implements KeyListener, MouseListener{ int a = 0; int b = 0; public void init(){ setSize(500,500); addKeyListener( this ); addMouseListener( this ); } public void paint(Graphics g){ g.setColor(Color.BLUE); g.fillRect(a, b, 400, 400); } @Override public void keyPressed(KeyEvent e) { System.out.println("Hello!") switch(e.getKeyCode()){ case KeyEvent.VK_DOWN: a -= 5; break; case KeyEvent.VK_UP: a += 5; break; case KeyEvent.VK_RIGHT: b += 5; break; case KeyEvent.VK_LEFT: b -= 5; break; } repaint(); } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } } ``` and it is not even reaching the switch statement,as can be seen by my debug println code. Why is this happening, and what can i do to fix this? Please do not hate if this is too broad, as I am a complete noob on this topic

Original source