rossc
asked on
doEvents in Java
Is there a statement in Java that is similar to the Visual Basic DoEvents statement? I would like to update a progress bar while running a series of tasks. After each task I set a progress bar value but the progress bar is not updated until all of the tasks complete.
In java you need to register listeners for events you want to track. So if you wish to track the Mouse events like mousedown, up etc..in a certain class, you have to implement the MouseListener interface. What that means is your class must implement the methods in the MouseListener interface. Once you do that, in the main or elsewhere you add your object as a listener. For. e.g. in your Frame class you do this.addListener(<object of your class which implements the MouseListener interface>....when you do this, for all mouse events your class' methods will be invoked.....more work than the DoEvents of VB...but neat....
for your purpose, if you're using a JProgressBar, you might just have to call a setValue and then repaint everytime a task completes......you might be missing the repaint part
You may consider letting the process you are following in the progress bar run in another thread.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
jim_cakalic,
You are right, the problem is that the GUI is not being updated until all of the processes have completed. I used your code and move the processes to another thread but the progress bar still didn't update until everything completed. To be sure the problem wasn't with the progress bar, I added code to update a label during processing and it also didn't change until all of the processes completed.
I even tried using a progress monitor but it never appeared. Could be that I got the code for the progress monitor wrong though.
You are right, the problem is that the GUI is not being updated until all of the processes have completed. I used your code and move the processes to another thread but the progress bar still didn't update until everything completed. To be sure the problem wasn't with the progress bar, I added code to update a label during processing and it also didn't change until all of the processes completed.
I even tried using a progress monitor but it never appeared. Could be that I got the code for the progress monitor wrong though.