I have data stored in Jtable, and then I am taking this data row by row and passing this data to a callable procedure in database(1 call for each row), and Procedure returns the
You can use a SwingWorker
to do the calls in the background and update the progress bar in the Event Dispatching Thread (a.k.a. EDT). Something like this:
SwingWorker worker = new SwingWorker() {
@Override
protected Void doInBackground() throws Exception {
int processed = 0;
DefaultTableModel model = (DefaultTableModel) data.getModel();
for (int count = 0; count < model.getRowCount(); count++) {
//...
String messege = csmt.getString(4);
processed++;
publish(processed / model.getRowCount() * 100);
}
return null;
}
@Override
protected void process(List list) {
progressBar.setValue(list.get(list.size() - 1));
}
};
worker.execute();
Take a look to Worker Threads and SwingWorker section in Concurrency in Swing trail.