Ma..... io non ho capito perchè non mi funziona ecco il codice:

codice:
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Dimension;

public class Main extends JFrame implements ActionListener, KeyListener{

	private static final long serialVersionUID = 1L;
	
	Button inizia, seleziona, esci;
	Gioco gio = new Gioco();
	
	public Main(){
		
		gio.setPreferredSize(new Dimension(500, 500));
		gio.setVisible(false);
		add(gio);
		
		add(inizia = button("Inizia"));
		add(seleziona = button("Seleziona"));
		add(esci = button("Esci"));
		addKeyListener(this);
		
	}
	
	@Override
	public void keyPressed(KeyEvent ke) {

		System.out.println("hai cliccato un tasto");
		
	}

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

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void actionPerformed(ActionEvent ae){
		
		String azione = ae.getActionCommand();
		
		if (azione.equals("Inizia"))
			gio.setVisible(true);
		else if(azione.equals("Esci"))
			System.exit(WIDTH);
			
	}
	
	public static void main (String args[]){
	
		Main frame = new Main();
		frame.setTitle("Prova");
		frame.setSize(500, 500);
		frame.setLayout(new FlowLayout());
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		
	}
	
	public Button button(String testo){
		
		Button b = new Button(testo);
		b.addActionListener(this);
		return b;
	}
	
}
in pratica quando clicco un tasto non accade nulla, e come se l'ascoltatore non ricevesse nulla, non so perchè mi ha sempre funzionato, Gioco gio è un JPanel comunque.... qualcuno sa come aiutarmi?