title: How to refresh a progress bar in java?
body: <p>I have tried to create this progress bar:</p>
  
  <pre><code>public class ProgressBar extends JFrame{
  
  private JButton fine = new JButton("Chiudi");
  final JProgressBar jp;
  JPanel body;
  JLabel banner1;
  JLabel banner2;
  JPanel testo;
  JTextArea areatesto;
  JPanel provapannello;
  JTextArea provatesto;
  JPanel pannellofine;
  
  public ProgressBar() {
       super("loading");
  
      setSize(440, 400);
      setResizable(true);
      Container content = getContentPane();
      content.setBackground(Color.YELLOW);
      body = new JPanel();
      body.setLayout(new FlowLayout());
      ImageIcon image1 = new ImageIcon("prova1.png");
      banner1 = new JLabel();
      banner2 = new JLabel();
      banner1.setIcon(image1);
      JTextArea prova = new JTextArea("bar", 2, 40);
      prova.setBackground(Color.LIGHT_GRAY);
      prova.setLineWrap(true);
      body.add(banner1);
      body.add(prova);
      body.add(banner2);
      banner.setBounds(30, 80, 120, 120);
      testo = new JPanel();
      areatesto = new JTextArea("Attendi Per Favore, Sto Preparando Il Tuo PDF", 2, 33);
      areatesto.setLineWrap(true);
      testo.add(areatesto);
     ImagePanel progress_background = new ImagePanel("p.jpg"); 
  
      UIManager.put("ProgressBar.background", new Color(29, 29, 29));
      UIManager.put("ProgressBar.foreground", new Color(16, 95, 173));
      UIManager.put("ProgressBar.selectionBackground", new Color(214, 214, 214));
      UIManager.put("ProgressBar.selectionForeground", new Color(29, 29, 29));
  
      jp = new JProgressBar();
      jp.setUI(new BasicProgressBarUI());
  
      jp.setBounds(0, 205, 434, 25);
      jp.setMinimum(0);
      jp.setMaximum(100);
      jp.setStringPainted(true);
      jp.setBorder(null);
      progress_background.add(jp);
      provapannello = new JPanel();
      provatesto = new JTextArea("prova", 2, 70);
  
  
      provatesto.setBackground(Color.LIGHT_GRAY);
      provapannello.setBounds(0, 226, 500, 100);
      provapannello.add(provatesto);
  
      content.add(provapannello);
      content.add(progress_background);
  
      pannellofine = new JPanel();
  
      pannellofine.add(fine);
      pannellofine.setBounds(340, 330, 100, 100);
      pannellofine.setVisible(false);
  
      content.add(pannellofine);
      content.add(testo);
  
      content.add(body);
      Thread runner;
      jp.setValue(0);
      setVisible(true);
      public void setValue(final int j) {
  
      Runnable target = new Runnable() {
          @Override
          public void run() {
              jp.setValue(j);
          }
      };
  
      SwingUtilities.invokeLater(target);
  
  }
      public static void main(String Args[]) {
      ProgressBar p = new ProgressBar();
  
  
      int i = 0;
      while(true){
          System.out.println("work");
          try {
              Thread.sleep(500);
          } catch (InterruptedException ex) { }
  
          p.setValue(i++);
      }
  }
  </code></pre>
  
  <p>I have tried to change the value of the ProgressBar with the method "setValue" but the bar does not increase, "while" cycles to infinity, but I see no change. what's wrong?</p>