You could make up a splash screen using a JWindow, add message to user and possibly a JProgressBar or JProgressMonitor. Show it just before you start your background thread for the other work. A modal dialog has controls that the user can use to dismiss it. Using a JWindow would avoid the difficulties with this. For the modal part you could disable/enable the JFrame as you show/dispose the JWindow.
subject: How to handle Modal Frame and Runnable thread simultaneously