Код очень длинный, поэтому я не могу вставить
весь код.
Может быть множество причин, по которым ваш код не работает. Может быть, вы объявили переменные кнопки дважды, чтобы фактически не изменять включение / выключение кнопки, как вы думаете. Может быть, вы блокируете EDT.
Вам необходимо создать SSCCE для публикации на форуме.
Так что вам решать, чтобы изолировать проблему. Начните с простой рамки с двумя кнопками и посмотрите, работает ли ваш код. Как только вы это заработаете, попробуйте запустить поток, который просто спит в течение 10 секунд, чтобы посмотреть, все ли еще работает.
Узнайте, как работает основной, прежде чем писать программу из 200 строк.
Узнайте, как сделать некоторую базовую отладку, мы не против читателей. Мы не можем догадаться, какую глупую ошибку вы совершаете, основываясь на вашем устном описании проблемы.