Did you try to put some repaint() in your actionPerformed method
after each update? Maybe not useful, just guess.
Another problem I concerned is the logic and style of your program.
I think it is not a good idea to put so many operations in the
event handler. Try to avoid doing time-consuming operations (such as
openning a file) if possible.
I am not quite understand what you want to do. But I will never use
a 2D JButton array in my program. The performence is very bad.
I remembered when I begin