Al posto di creare una classe interna anonima partendo da KeyListener, parti da KeyAdapter: fa la stessa cosa ma ti permette di ridefinire solo i metodi che ti interessano e non tutti.
E comunque sì, listener.actionPerformed(null); è veramente orribile. Se proprio chiama il doClick() del pulsante o, meglio, estrai il contenuto di actionPerformed() in un metodo a parte.