1) это EventDispatchThread
связанная проблема, EDT вполне гарантирует, что все изменения в GUI будут сделаны в один момент
2) вы вызвали ActionPerformed
из JButton
и до тех пор, пока все события не закончатся, ваш GUI должен быть заморожен или не отвечает, то же самое для JButton
и JLabel
в вашем случае
3) лучше было бы перенаправить чтение содержимого File
на задание Backgroung, например SwingWorker
или Runnable#Thread
, тогда JButton
и JLabel
будут изменены, и GUI будет во время Фонового задания, ответственного за Мышь или KeyBoard
или
4) грязный хак, разделенный на два разделенных Action
, задерживается на javax.swing.Timer
, но в этом случае снова, пока все события не закончатся, ваш графический интерфейс будет зависать или будет не отвечать