Was ist denn eigentlich mit dem JFrame frame? Viel sieht man ja nicht. Ist der denn eigentlich visible und ist er auch aktiv? Soweit ich weiß funktioniert der KeyListener nur, wenn das entsprechende Fenster (der JFrame) aktiv ist bzw. den Fokus hat.
(Bitte nicht hauen, wenn ich mich irre.

)