phi ha scritto:
non ho il controllo dello snake e non riesco a muoverlo a mio piacimento, e non riesco a capire il problema.
JPanel è un componente che normalmente non può ricevere il "focus", viene usato tipicamente solo come contenitore di altri componenti o in certi casi per fare dei disegni. Quindi questo è il motivo per cui per default non può avere il focus.
In casi specifici come quello che hai descritto, questa capacità di poter ricevere il focus va attivata esplicitamente:
setFocusable(true) sul JPanel. Allora un KeyListener sul JPanel "funziona".
Ma attenzione: se il tuo pannello è l'unico componente della tua interfaccia, allora quando avvii l'applicazione, avrà sicuramente già il focus.
Se hai altri componenti, pulsanti, textfield ecc... il focus inizialmente potrebbe essere su uno di questi.
Se vuoi che cliccando sul JPanel riceva il focus, questo non è gestito di serie, bisogna registrare un MouseListener che al mousePressed dia il focus.