Introduction

In this article, we describe a very popular or common feature of any software installation. I think all of you have seen progress bars. Now we are describing how we can make your own progress bars. A Progress Bar is a component used to show the status of the application; how much time is to complete the task of the application.
Sometimes a task running within a program might take a while to complete. A user-friendly program provides some indication to the user that the task is occurring, how long the task might take, and how much work has already been done. One way of indicating work, and perhaps the amount of progress, is to use an animated image.

Creating progress bar in Java

Step 1: Importing a necessary package.
  1. import java.util.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import javax.swing.event.*;
Step 2: Defining the necessary variables.
  1. JProgressBar prbr;
  2. JButton b;
  3. JLabel l;
  4. JPanel P;
Step 3: Create the components within the constructor (its optional), but it is not necessary to define them in the constructor; you can define then anywhere etc.
  1. public MyProgressBar()
  2. {
  3. // creating a panel p
  4. P = new JPanel();
  5. // set the size of panel
  6. P.setPreferredSize(new Dimension(400, 400));
  7. //add to thye conentpane
  8. getContentPane().add(P);
  9. // Create a label and progress bar
  10. l = new JLabel("Waiting for your click...");
  11. // set the size of label
  12. l.setPreferredSize(new Dimension(380, 45));
  13. //add to thye conent panel
  14. P.add(l);
  15. // create the progress bar
  16. prbr = new JProgressBar();
  17. // set the size of progress bar
  18. prbr.setPreferredSize(new Dimension(300, 20));
  19. //set minimum value for starting the progress bar
  20. prbr.setMinimum(0);
  21. //set maximum value for end point of the progress bar
  22. prbr.setMaximum(1000);
  23. // set the value at starting is 0
  24. prbr.setValue(0);
  25. // set bounds means location in panel
  26. prbr.setBounds(30, 50, 360, 30);
  27. //now add in pannel
  28. P.add(prbr);
  29. //creating button with name 'go'
  30. b = new JButton("Go");
  31. P.add(b);
  32. b.addActionListener(this);
  33. setTitle("MY Progress Bar ready");
  34. setSize(400, 400);
  35. setBackground(Color.Green);
  36. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37. }
Step 4: Override the action performed method.
  1. public void actionPerformed(ActionEvent event)
  2. {
  3. if (event.getSource() == b)
  4. {
  5. // Prevent more button presses
  6. b.setEnabled(false);
  7. // Perform all of our bogus tasks
  8. for (int iCtr = 1; iCtr < 1001; iCtr++)
  9. {
  10. // Do some sort of simulated task
  11. DoTask(iCtr);
  12. // Update the progress indicator and label
  13. l.setText("Performing task " + iCtr + " of 1000");
  14. Rectangle labelRect = l.getBounds();
  15. labelRect.x = 0;
  16. labelRect.y = 0;
  17. l.paintImmediately(labelRect);
  18. prbr.setValue(iCtr);
  19. Rectangle progressRect = prbr.getBounds();
  20. progressRect.x = 0;
  21. progressRect.y = 0;
  22. prbr.paintImmediately(progressRect);
  23. }
  24. }
  25. }
Step 5: Create the Dotask method functionality.
  1. public void DoTask(int iCtr)
  2. {
  3. Random random = new Random(iCtr);
  4. // Waste some time
  5. for (int iValue = 0; iValue < random.nextFloat() * 1000; iValue++)
  6. {
  7. System.out.println("Value=" + iValue);
  8. }
  9. }
Step 6: Create the main method and create an object of this class within main.
  1. public static void main(String args[])
  2. {
  3. // Create an instance of the test application
  4. MyProgressBar mF = new MyProgressBar();
  5. mF.setVisible(true);
  6. mF.pack();
  7. }
Complete Code
  1. import java.util.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import javax.swing.event.*;
  6. class MyProgressBar extends JFrame implements ActionListener
  7. {
  8. JProgressBar prbr;
  9. JButton b;
  10. JLabel l;
  11. JPanel P;
  12. public MyProgressBar()
  13. {
  14. setTitle("MY Progress Bar ready");
  15. setSize(400, 400);
  16. setBackground(Color.green);
  17. P = new JPanel();
  18. P.setPreferredSize(new Dimension(400, 400));
  19. getContentPane().add(P);
  20. // Create a label and progress bar
  21. l = new JLabel("Waiting to start tasks...");
  22. l.setPreferredSize(new Dimension(380, 45));
  23. P.add(l);
  24. prbr = new JProgressBar();
  25. prbr.setPreferredSize(new Dimension(300, 20));
  26. prbr.setMinimum(0);
  27. prbr.setMaximum(1000);
  28. prbr.setValue(0);
  29. prbr.setBounds(30, 50, 360, 30);
  30. P.add(prbr);
  31. b = new JButton("Go");
  32. P.add(b);
  33. b.addActionListener(this);
  34. }
  35. public void actionPerformed(ActionEvent event)
  36. {
  37. if (event.getSource() == b)
  38. {
  39. // Prevent more button presses
  40. b.setEnabled(false);
  41. // Perform all of our bogus tasks
  42. for (int iCtr = 1; iCtr < 1001; iCtr++)
  43. {
  44. // Do some sort of simulated task
  45. DoBogusTask(iCtr);
  46. // Update the progress indicator and label
  47. l.setText("Performing task " + iCtr + " of 1000");
  48. Rectangle labelRect = l.getBounds();
  49. labelRect.x = 0;
  50. labelRect.y = 0;
  51. l.paintImmediately(labelRect);
  52. prbr.setValue(iCtr);
  53. Rectangle progressRect = prbr.getBounds();
  54. progressRect.x = 0;
  55. progressRect.y = 0;
  56. prbr.paintImmediately(progressRect);
  57. }
  58. }
  59. }
  60. public void DoBogusTask(int iCtr)
  61. {
  62. Random random = new Random(iCtr);
  63. // Waste some time
  64. for (int iValue = 0; iValue < random.nextFloat() * 1000; iValue++)
  65. {
  66. System.out.println("iValue=" + iValue);
  67. }
  68. }
  69. public static void main(String args[])
  70. {
  71. // Create an instance of the test application
  72. MyProgressBar mF = new MyProgressBar();
  73. mF.setVisible(true);
  74. mF.pack();
  75. }
  76. }
Output
Cmd output
Progressbarcmd.jpg
The initial output of the frame with progress bar.
Progressbar.jpg
After clicking on the go button:
Progressbar1.jpg
Resources
  1. The Use of JTable in Swing
  2. Working With JMenu in Swing
  3. Describing the Java Packages
  4. Progressbar control in Silverlight 3.0
  5. Use of ByteStreams and CharacterStreams in JAVA