Visst måste objektet vara en Component, men så länge hans klass Move ärver från Component på något vis ( Om det nu är Move han vill använda ) så ska det fungera. Hans klass KeyHandler behöver inte vara av typen Component, endast objektet han sätter KeyListener på.
addKeyListener(KeyListerner kl) tar en KeyListener som argument.
Om du t.ex. har en JFrame jfrmMinRuta som du vill kunna lyssna på tangentbordsinmatningar ifrån så gör du jfrmMinRuta.addKeyListener(new KeyHandler());
Om du ska koppla flera komponenter till samma KeyListener så är det smart att göra en instans av det.
Normalt är Lyssnare specialicerade för just en viss komponent så om man har en komponent "MinKomponent" så brukar man låta den implementera interfacet KeyListener och så i konstruktorn till denna komponent så gör man så som du vill göra (addKeyListener(this))
EDIT: Jo, alltså... Det är lite för enkelt att låta lyssnaren lyssna på sig själv. Tänk såhär "Jag har en lyssnare, vem ska den lyssna på" och så i den klassen så säger du "hörrö klassen, här har du ett jättefint objekt som du kan prata med".
Så här har jag gjort en gång: addKeyListener(this.mitt_objekt) och mitt objekt var inte en Component, det är en egen definerad klass.
Men det kanske ser ut just så här pga att det inte en en Component?