Your problem is probably caused by loading the images on the EDT (event dispatch thread). This blocks the rest of the GUI.
For tasks that take time, like loading images, use a SwingWorker
. This created a new thread where your task is executed and you can also query the thread (e.g., for progress) while it is running. Running long tasks on a background thread leaves the EDT free to update quickly.
Note: make sure you initialize the GUI in an initial thread.