We help IT Professionals succeed at work.

JprogressBar / DB

jackiemani
jackiemani asked
on
Medium Priority
641 Views
Last Modified: 2008-02-01
Hai i use Jprogress Bar for operation time to represent data fetching from database.
As the fetching time is not definite i use progressBar.setIndeterminate(true);
But this doesnt move until the data is fetched.
If i dont hide the progressbar i see it working after the data is fetched while fetching data it doesnt move.
Can anyone help me on this

my code is as below
for (int i = 0; i < 100; i++) {
progressBar.setIndeterminate(true);
progressBar.setValue (i);
paint(getGraphics());
}

Rgds
Mani
Comment
Watch Question

CERTIFIED EXPERT
Top Expert 2016
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
Yes data is fethced seperately.Not in this logic.
CERTIFIED EXPERT
Top Expert 2016

Commented:
In a dedicated thread?
CERTIFIED EXPERT
Top Expert 2016

Commented:
i.e. (in pseudo) it should be:

public void actionPerformed(ActionEvent e) {
// Swing Timer actionPerformed
    if (taskDone == false) {
        incProgress();
    }
    else {
        stopIt();
    }
}

.............................


public void actionPerformed(ActionEvent e) {
   // handler of button or whatever kicks things off
   startTimer();
   Thread dataFetchThread = new Thread(new MyDataFetcher()); // MyDataFetcher is a Runnable
   dataFetchThread.start();
}
Mayank SPrincipal Technologist
CERTIFIED EXPERT

Commented:
As a matter of fact, how do you propose to find out how much data has been fetched and show the appropriate limit on your JProgressBar? I mean - if 100 rows of data have to be fetched, how will you know that 60 have been fetched and 40 are pending, and so you have to show only 60% of progress in the JProgressBar?

Author

Commented:
Hi Chej,
I havent worked with threads,
can u support me with a sample code.
Actually we use DB componets to get the data from DB.
This is the Jdialog where in i show my Progress bar.

package htms.client.EXP.DlvyPlanList;

import com.borland.jbcl.layout.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PgBar extends JDialog {
  private JProgressBar progressBar;
  private Timer timer;
  public final static int ONE_SECOND = 1000;

  private String newline = "\n";
  private XYLayout xYLayout1 = new XYLayout ();
  Thread th = new Thread ();
  private XYLayout xYLayout2 = new XYLayout ();
  private XYLayout xYLayout3 = new XYLayout ();

  public PgBar (String title) {
    this.setTitle (title);

    try {
      jbInit ();
    }
    catch (Exception e) {
      e.printStackTrace ();
    }
  }

  private void jbInit () throws Exception {
    progressBar = new JProgressBar (0 , 100);
  this.getContentPane ().setLayout (xYLayout1);
    xYLayout1.setWidth (400);
    xYLayout1.setHeight (60);

     progressBar.setPreferredSize (new Dimension (300 , 20));
    progressBar.setBounds (23 , 29 , 300 , 23);
    progressBar.setMinimum (0);
    progressBar.setMaximum (20);
    progressBar.setValue (0);
    progressBar.setStringPainted (true);
    progressBar.setString ("Fetching Data ..........");
    progressBar.setBorder (BorderFactory.createLoweredBevelBorder ());
    this.getContentPane ().add (progressBar , new XYConstraints (23 , 29 , 357 , 23));

    progressBar.setIndeterminate (true);
    move (350 , 350);
      setSize (400 , 90);
      setVisible (true);
      System.out.println ("2");
      for (int i = 0; i < 100; i++) {
      progressBar.setIndeterminate (true);
      progressBar.setValue (i);
      paint (getGraphics ());
      Rectangle progressRect = new Rectangle (23 , 29 , 300 , 23); //progressBar.getBounds ();
      System.out.println (progressRect);
      progressRect.x = -20;
      progressRect.y = -20;
      progressBar.paintImmediately (progressRect);
      System.out.println (progressBar.getPercentComplete ());
      th.sleep (10);
      if (progressBar.getPercentComplete () == 0.95) {
      break;
      }
    }
    this.setModal (true);
  }

}


And in the main screen on the button action

 void jbRtrv_actionPerformed(java.awt.event.ActionEvent event) {
      theProgressBar =  new PgBar("Data Processing");
      entitySet.open();// Where entitySet is out own component
    }
Component has onopen and afterOpen methods rmtinf is the ejbconnection component
 void m_entitySet_onOpen(EntitySetEvent e) throws Exception {
             entitySet.setFetchedRecords(rmtInf.getCommonSelect(hashInqList));
       }
in After open the Progressbar is hidden.
   void m_entitySet_afterOpen(EntitySetEvent e) {
      theProgressBar.hide();
   }

Kindly suggest how to use Thread over this model source.


Rgds
Mani


hai mayankeagle
  I dont want to trace the DB data fetching just want a Indeterminate Progress bar to be shown so that user understands some action is done behind for getting the data and he has to wait for it.

Rgds
Mani



Mayank SPrincipal Technologist
CERTIFIED EXPERT
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
Hi mayankeagle Thanks for the code!
And also thanks to Chej to directing in the right direction! I would split points for both.
Thanks a lot.
Mani
CERTIFIED EXPERT
Top Expert 2016

Commented:
8-)
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.