Java Swing Threading with Updatable JProgressBar
Posted
by
Anthony Sparks
on Stack Overflow
See other posts from Stack Overflow
or by Anthony Sparks
Published on 2011-03-02T04:47:14Z
Indexed on
2011/03/02
7:24 UTC
Read the original article
Hit count: 373
First off I've been working with Java's Concurency package quite a bit lately but I have found an issue that I am stuck on. I want to have and Application and the Application can have a SplashScreen with a status bar and the loading of other data. So I decided to use SwingUtilities.invokeAndWait( call the splash component here ). The SplashScreen then appears with a JProgressBar and runs a group of threads. But I can't seem to get a good handle on things. I've looked over SwingWorker and tried using it for this purpose but the thread just returns. Here is a bit of sudo-code. and the points I'm trying to achieve.
- Have an Application that has a SplashScreen that pauses while loading info
- Be able to run multiple threads under the SplashScreen
Have the progress bar of the SplashScreen Update-able yet not exit until all threads are done.
Launching splash screen
try { SwingUtilities.invokeAndWait( SplashScreen ); } catch (InterruptedException e) { } catch (InvocationTargetException e) { }
Splash screen construction
SplashScreen extends JFrame implements Runnable{ public void run() { //run threads //while updating status bar } }
I have tried many things including SwingWorkers, Threads using CountDownLatch's, and others. The CountDownLatch's actually worked in the manner I wanted to do the processing but I was unable to update the GUI. When using the SwingWorkers either the invokeAndWait was basically nullified (which is their purpose) or it wouldn't update the GUI still even when using a PropertyChangedListener. If someone else has a couple ideas it would be great to hear them. Thanks in advance.
© Stack Overflow or respective owner