Я думаю, что вам гораздо лучше использовать для этого либо анонимный внутренний класс, либо закрытый внутренний класс, чем делать то, что вы пытаетесь сделать прямо сейчас - пусть ваш класс графического интерфейса реализует ActionListener. Это, как говорится, не является ли это утверждение задом наперед?
action.getSource() == letterButton
На самом деле, эта строка даже компилируется? Я был бы удивлен, если бы он сделал так, как вы пытаетесь присвоить значение вызову метода, который не имеет смысла.
лучше будет
letterButton == action.getSource();
Вы понимаете, почему?
изменить: игнорировать дерьмо выше. недостаточно сна или кофеина. Вздох ....
Кроме того, я ответил в вашей предыдущей теме о способе использования анонимного внутреннего класса, и мне не нужно беспокоиться о том, чтобы объявить переменные как окончательные.