title: JProgressBar doesn't update , can't find a clue
body: <p>nice job , now i just wanna know why if i add into while loop the instruction System.out.println below the progress is shown on both , cmd and Pgbar in the Gui ?? : </p>
  
  <pre><code>while(progress &lt; 99){ 
    System.out.println("into while of PBar Thread progress = "+progress); 
    if(progress != Path.operationProgress){ 
      operationProgressBar.setValue(progress); 
      progress = Path.operationProgress; 
      operationProgressBar.repaint(); } }
  </code></pre>
  
  <blockquote>
    <p>need some help around , i can't get the JProgressBar to update, i
    can't use SwingWorker, i have to solve this without it . the variable
    Path.operationProgress is a static variable from a "Path" class
    instance, and it's updated from another thread, so i think the PBar
    and Path instances are both executed in user's Threads and not in the
    EDT . here is the Code of the progress bar :</p>
  
  <pre><code>    import javax.swing.*;
      public class Pbar extends Thread {
        JProgressBar operationProgressBar;
        public Pbar(JProgressBar operationProgressBar) {
            this.operationProgressBar = operationProgressBar;
        }
  
        @Override
        public void run() {
            int progress = Path.operationProgress;
            while(progress &lt; 99) {
                if(progress != Path.operationProgress) {
                    operationProgressBar.setValue(progress);
                    progress = Path.operationProgress;
                    operationProgressBar.repaint();
                }}}
       }
  </code></pre>
    
    <p>this is the action that launches the threads :</p>
  
  <pre><code>private javax.swing.JProgressBar operationProgressBar;
  private javax.swing.JLabel pathImage;
  private javax.swing.JButton simulatedAnnelingButton;
  
  public class TSPGUI extends javax.swing.JFrame {
  
      TSPMG tspInstance;
      Path p, result;
      String filename = "";
      int neighborHood_Type = 1, i = 0;
      // ......Constructor Stuff and init()
  
  private void simulatedAnnelingButtonActionPerformed(java.awt.event.ActionEvent evt)
  </code></pre>
    
    <p>{<br>
                Thread sa = new Thread(){
                    @Override
                    public void run(){
                        result = p.SimulatedAnnealing(neighborHood_Type);
                        String lastCostString = result.Cost() + "";
                        lastCostLabel.setText(lastCostString);
                    }};
                  sa.start();
                  Pbar pb = new Pbar(operationProgressBar);
                  pb.start();
            }
        //Some other Stuff ... 
        }</p>
  </blockquote>