Allora per ora ho fatto questo...ma il pannello non si muove

Classe Pannello extends JPanel

(per il movimento ho fatto una cosa rozza giusto per vedere se funziona XD)

codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Pannello extends JPanel implements KeyListener {
	
	//coordinate dell'elemento
	private static int x;
	private static int y;
	
	//costruttore
	public Pannello(int a, int b){
		super();
		Pannello.x = a;
		Pannello.y = b;
		this.setFocusable(true);
		this.requestFocusInWindow();
	}
	
	public void paint(Graphics g){
		super.paint(g); //richiamo il metodo della classe genitore
		Graphics2D g2 = (Graphics2D) g; //cast in Graphics2D di un oggetto Graphcis
		g2.setColor(Color.red);
		
		g2.fillRect(x, y, 100, 100);
	}
	
//definisco cosa succede alla pressione di un tasto
	
	public void keyPressed(KeyEvent ke) {
		
		switch(ke.getKeyCode()){
		
		case KeyEvent.VK_UP:
			Pannello.y = (Pannello.y) - 1;
			repaint();
			break;
		case KeyEvent.VK_DOWN:
			Pannello.y = (Pannello.y) + 1;
			repaint();
			break;
		case KeyEvent.VK_RIGHT:
			Pannello.x = (Pannello.x) + 1;
			repaint();
			break;
		case KeyEvent.VK_LEFT:
			Pannello.x = (Pannello.x) - 1;
			repaint();
			break;
		}
	
	}
	
	public void keyReleased(KeyEvent arg0) {}
	public void keyTyped(KeyEvent arg0) {}

	
	
}
Classe Finestra Extends JFrame
codice:
import javax.swing.*;

import java.awt.*;

public class Finestra extends JFrame {
	
	public Finestra(int a, int b){
		super();
		this.setSize(400,400);
		Pannello p = new Pannello(a,b);
		this.add(p);
		this.addKeyListener(p);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setResizable(false);
		
	}

public static void main (String[] args){
	Finestra f = new Finestra(0,0);
	
}
	

}

Il problema è che non ho definito una delle due classi "interna" all'altra? sembra che non "senta" proprio i tasti...