Sure, you can have a function that you run using invokeAsynchronous, and pass to it a reference to a progress bar component. Then use invokeLater’s to update progress bar (updates to the progress bar shouldn’t come directly from a background thread - invokeLater’s will get processed on the GUI thead)