Обычно вы не хотите использовать KeyListener из-за проблем с фокусировкой (вероятно, именно поэтому ваш слушатель только время от времени слушает - вероятно, ваш слушающий компонент теряет фокус, и поэтому KeyListener теряет свою функцию.
Лучше использовать привязки клавиш, когда вам не нужно особо волноваться о проблемах фокуса и когда вы имеете дело с конструкцией более высокого уровня, которую Swing использует для прослушивания компонентов. Учебники "покажут вам путь".