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 need to use SwingWorker
for updating UI while you do long background process.
Read tutorail for SwingWorker and Concurency in Swing.
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<Void, Integer> worker = new SwingWorker<Void, Integer>() {
@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<Integer> list) {
progressBar.setValue(list.get(list.size() - 1));
}
};
worker.execute();
Take a look to Worker Threads and SwingWorker section in Concurrency in Swing trail.