Это совершенно неправильный дизайн.
Прежде всего: actionPerformed()
должен вызвать какое-то действие, но никогда не запускать игровой цикл. actionPerformed()
должен вернуть как можно скорее: он не предназначен для выполнения сложных действий. В идеале поместите игровой цикл в собственный поток и реализуйте actionPerformed()
таким образом, чтобы он передавал действия в игровой цикл и затем сразу возвращался.
Второе: игровой цикл должен быть реализован итеративно, а не как рекурсивная функция. (Вот почему он называется «игровой цикл», в первую очередь.) Нет смысла реализовывать его рекурсивно, так как игровые циклы имеют тенденцию работать довольно долго, а рекурсивная концепция будет потреблять все больше и больше стековой памяти и в какой-то момент потерпит неудачу. - и, как правило, довольно скоро.
Я рекомендую полностью изменить дизайн вашего программного обеспечения. Тогда у вас не будет проблем с JButton
.