title: How can I make a JProgressBar fill up during a certain interval?
body: <p>Your solution works with the timer JProgressBar fill up during a certain interval however when btn is pressed the timer doesnt start any suggestions I have included the full code ?</p>
  
  <p>Here is the full code:</p>
  
  <pre><code>//Packages
  import java.awt.Color;
  import java.awt.EventQueue;
  import java.awt.Font;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  
  import javax.swing.BoxLayout;
  import javax.swing.JButton;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JOptionPane;
  import javax.swing.JProgressBar;
  import javax.swing.Timer;
  import javax.swing.event.ChangeEvent;
  import javax.swing.event.ChangeListener;
  
  
  //Class
  public class PickUp 
  {
  
      private JFrame frmPickUp;
  
      /**
       * Launch the application.
       */
      public static void NewScreen2() {
          EventQueue.invokeLater(new Runnable() {
              public void run() {
                  try {
                      PickUp window = new PickUp();
                      window.frmPickUp.setVisible(true);
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          });
      }
      @SuppressWarnings("serial")
      public class ProgressBar extends JFrame
      {
          private int c = 0;
          private Timer t;
          private JButton btn;
          private JProgressBar pBar;
          private long currentTime;
  
          // 15 minutes in milliseconds
          private final int waitingTime = 15 * 60 * 1000;//900000 milliseconds
  
          private final int delay = waitingTime / 100;//9000 == 9 seconds
  
          public ProgressBar()
          {
  
              // delay in milliseconds
              //inside the internal anonymous class, we write the code we want the timer to execute each delay
              t = new Timer(delay, new ActionListener() {
  
                  public void actionPerformed(ActionEvent e)
                  {
                      if(c &lt;= 100) pBar.setValue(++c);
                  }
              });
  
              btn = new JButton("Start Timer");
  
              // Adding an action listener: when you click the button, the timer starts
              btn.addActionListener(new ActionListener() {
  
                  public void actionPerformed(ActionEvent e)
                  {
                      // starting the timer, which causes it to sending ActionEvents to its Listeners
                      t.start();
                  }
              });
              getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
  
              getContentPane().add(btn);//Adding the button to the content pane
              //
              //Creating a progress bar from 0 to 100
              pBar = new JProgressBar(0, 100);
  
              // Setting the initial value of the progress bar
              pBar.setValue(c);// c == 0
  
              // Showing a string progress bar
              pBar.setStringPainted(true);
  
              //adding a changeListener to the progress bar
              pBar.addChangeListener(new ChangeListener() {
  
                  public void stateChanged(ChangeEvent e)
                  {
                      if(pBar.getValue() == 100)
                      {
                          t.stop();
                          JOptionPane.showMessageDialog(null, "Your order is ready!");
  
                          c = 0;
                          pBar.setValue(c);//set the initial value of the progress bar to 0 again
                      }
                  }
              });
  
              getContentPane().add(pBar);//Adding the progress bar to the content pane
  
              //normal housekeeping's stuff
              pack();
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              setVisible(true);
              setLocationRelativeTo(null);
          }
  
          public void main(String[] args)
          {
              ProgressBar pb = new ProgressBar();
          }
  
      }
  
      /**
       * Create the application.
       */
      public PickUp() {
          initialize();
      }
  
      /**
       * Initialize the contents of the frame.
       */
  
      //Variables
      private void initialize() {
          frmPickUp = new JFrame();
          frmPickUp.setTitle("Pick Up");
          frmPickUp.getContentPane().setBackground(new Color(255, 250, 205));
          frmPickUp.getContentPane().setLayout(null);
          //Text, headings
          JLabel lblYourPizzaWill = new JLabel("Your pizza will be ready to pick up in:");
          lblYourPizzaWill.setFont(new Font("Tahoma", Font.BOLD, 12));
          lblYourPizzaWill.setBounds(109, 29, 238, 20);
          frmPickUp.getContentPane().add(lblYourPizzaWill);
  
          JLabel lblMins = new JLabel("15 MINS");
          lblMins.setFont(new Font("Tahoma", Font.BOLD, 16));
          lblMins.setForeground(new Color(255, 0, 0));
          lblMins.setBounds(189, 60, 82, 31);
          frmPickUp.getContentPane().add(lblMins);
  
          JProgressBar pBar = new JProgressBar(0, 100);
          pBar.setValue(0);
          pBar.setStringPainted(true);
          pBar.setBounds(212, 102, 146, 17);
          frmPickUp.getContentPane().add(pBar);
  
          JButton btn = new JButton("Start Timer");
          btn.setFont(new Font("Tahoma", Font.BOLD, 12));
          btn.setBounds(96, 98, 106, 23);
          frmPickUp.getContentPane().add(btn);
          frmPickUp.setBounds(100, 100, 450, 170);
          frmPickUp.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      }
      }
  </code></pre>