Не думаю, что вы понимаете, что делаете при создании слушателей. По сути, вы создаете класс прямо на месте, и у этого класса есть метод с именем eventDispatched (). Внутри eventDispatched () нет l oop, поэтому нет l oop, из которого можно было бы выйти.
Более того, вероятно, ошибочно было бы предполагать, что событие является KeyEvent. Это примечание.
Вашему слушателю, вероятно, нужно установить какое-то поле, на которое смотрит ваш while l oop. Вместо while (true) вам нужно сделать «while (мой слушатель не установил какой-либо флаг на другое значение)».