<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FJProgressBar</id>
		<title>Java Tutorial/Swing/JProgressBar - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FJProgressBar"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JProgressBar&amp;action=history"/>
		<updated>2026-04-22T08:20:57Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JProgressBar&amp;diff=3839&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JProgressBar&amp;diff=3839&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JProgressBar&amp;diff=3840&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JProgressBar&amp;diff=3840&amp;oldid=prev"/>
				<updated>2010-05-31T15:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  A progress bar is used for lengthy tasks. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.FlowLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
import javax.swing.Timer;&lt;br /&gt;
public class ProgressBar {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    final Timer  timer;&lt;br /&gt;
    final JProgressBar progressBar = new JProgressBar();&lt;br /&gt;
    final JButton button = new JButton(&amp;quot;Start&amp;quot;);&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setLayout(new FlowLayout());&lt;br /&gt;
    f.add(progressBar);&lt;br /&gt;
    f.add(button);&lt;br /&gt;
    ActionListener updateProBar = new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent actionEvent) {&lt;br /&gt;
        int val = progressBar.getValue();&lt;br /&gt;
        if (val &amp;gt;= 100) {&lt;br /&gt;
        //  timer.stop();&lt;br /&gt;
          button.setText(&amp;quot;End&amp;quot;);&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        progressBar.setValue(++val);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    timer = new Timer(50, updateProBar);&lt;br /&gt;
    button.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        if (timer.isRunning()) {&lt;br /&gt;
          timer.stop();&lt;br /&gt;
          button.setText(&amp;quot;Start&amp;quot;);&lt;br /&gt;
        } else if (button.getText() != &amp;quot;End&amp;quot;) {&lt;br /&gt;
          timer.start();&lt;br /&gt;
          button.setText(&amp;quot;Stop&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    f.pack();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setResizable(false);&lt;br /&gt;
    f.setLocationRelativeTo(null);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a JProgressBar Component with an Unknown Maximum ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    // Create a horizontal progress bar&lt;br /&gt;
    int min = 0;&lt;br /&gt;
    int max = 100;&lt;br /&gt;
    JProgressBar progress = new JProgressBar(min, max);&lt;br /&gt;
    // Play animation&lt;br /&gt;
    progress.setIndeterminate(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a modal progress dialog ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JDialog;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame parentFrame = new JFrame();&lt;br /&gt;
    parentFrame.setSize(500, 150);&lt;br /&gt;
    JLabel jl = new JLabel();&lt;br /&gt;
    jl.setText(&amp;quot;Count : 0&amp;quot;);&lt;br /&gt;
    parentFrame.add(BorderLayout.CENTER, jl);&lt;br /&gt;
    parentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    parentFrame.setVisible(true);&lt;br /&gt;
    final JDialog dlg = new JDialog(parentFrame, &amp;quot;Progress Dialog&amp;quot;, true);&lt;br /&gt;
    JProgressBar dpb = new JProgressBar(0, 500);&lt;br /&gt;
    dlg.add(BorderLayout.CENTER, dpb);&lt;br /&gt;
    dlg.add(BorderLayout.NORTH, new JLabel(&amp;quot;Progress...&amp;quot;));&lt;br /&gt;
    dlg.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);&lt;br /&gt;
    dlg.setSize(300, 75);&lt;br /&gt;
    dlg.setLocationRelativeTo(parentFrame);&lt;br /&gt;
    Thread t = new Thread(new Runnable() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        dlg.setVisible(true);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    t.start();&lt;br /&gt;
    for (int i = 0; i &amp;lt;= 500; i++) {&lt;br /&gt;
      jl.setText(&amp;quot;Count : &amp;quot; + i);&lt;br /&gt;
      dpb.setValue(i);&lt;br /&gt;
      if(dpb.getValue() == 500){&lt;br /&gt;
        dlg.setVisible(false);&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
        &lt;br /&gt;
      }&lt;br /&gt;
      try {&lt;br /&gt;
        Thread.sleep(25);&lt;br /&gt;
      } catch (InterruptedException e) {&lt;br /&gt;
        e.printStackTrace();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    dlg.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Customizing JProgressBar Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Property StringObject TypeProgressBar.backgroundColorProgressBar.borderBorderProgressBar.cellLengthIntegerProgressBar.cellSpacingIntegerProgressBar.cycleTimeIntegerProgressBar.fontFontProgressBar.foregroundColorProgressBar.highlightColorProgressBar.horizontalSizeDimensionProgressBar.repaintIntervalIntegerProgressBar.selectionBackgroundColorProgressBar.selectionForegroundColorProgressBar.shadowColorProgressBar.verticalSizeDimensionProgressBarUIString&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Displaying the Percentage Done on a JProgressBar Component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    int minimum = 0;&lt;br /&gt;
    int maximum = 100;&lt;br /&gt;
    JProgressBar progress = new JProgressBar(minimum, maximum);&lt;br /&gt;
    // Overlay a string showing the percentage done&lt;br /&gt;
    progress.setStringPainted(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Getting and Setting the Values of a JProgressBar Component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    int minimum = 0;&lt;br /&gt;
    int maximum = 100;&lt;br /&gt;
    JProgressBar progress = new JProgressBar(minimum, maximum);&lt;br /&gt;
    // Get the current value&lt;br /&gt;
    int value = progress.getValue();&lt;br /&gt;
    // Get the minimum value&lt;br /&gt;
    int min = progress.getMinimum();&lt;br /&gt;
    // Get the maximum value&lt;br /&gt;
    int max = progress.getMaximum();&lt;br /&gt;
    // Change the minimum value&lt;br /&gt;
    int newMin = 0;&lt;br /&gt;
    progress.setMinimum(newMin);&lt;br /&gt;
    // Change the maximum value&lt;br /&gt;
    int newMax = 256;&lt;br /&gt;
    progress.setMaximum(newMax);&lt;br /&gt;
    // Set the value; the new value will be forced into the bar&amp;quot;s range&lt;br /&gt;
    int newValue = 33;&lt;br /&gt;
    progress.setValue(newValue);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Handling JProgressBar Events: notification of data model changes through a ChangeListener ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
import javax.swing.event.ChangeEvent;&lt;br /&gt;
import javax.swing.event.ChangeListener;&lt;br /&gt;
class BoundedChangeListener implements ChangeListener {&lt;br /&gt;
  public void stateChanged(ChangeEvent changeEvent) {&lt;br /&gt;
    Object source = changeEvent.getSource();&lt;br /&gt;
    if (source instanceof JProgressBar) {&lt;br /&gt;
      JProgressBar theJProgressBar = (JProgressBar) source;&lt;br /&gt;
      System.out.println(&amp;quot;ProgressBar changed: &amp;quot; + theJProgressBar.getValue());&lt;br /&gt;
    } else {&lt;br /&gt;
      System.out.println(&amp;quot;Something changed: &amp;quot; + source);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class ProgressBarStepBoundedChangeListener {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Stepping Progress&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    final JProgressBar aJProgressBar = new JProgressBar(JProgressBar.VERTICAL);&lt;br /&gt;
    aJProgressBar.setStringPainted(true);&lt;br /&gt;
    aJProgressBar.addChangeListener(new BoundedChangeListener());&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
      aJProgressBar.setValue(i++);&lt;br /&gt;
      Thread.sleep(100);&lt;br /&gt;
    }&lt;br /&gt;
    frame.add(aJProgressBar, BorderLayout.NORTH);&lt;br /&gt;
    frame.setSize(300, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  JProgressBar ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are five different constructors for JProgressBar:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public JProgressBar()&lt;br /&gt;
JProgressBar aJProgressBar = new JProgressBar();&lt;br /&gt;
public JProgressBar(int orientation)&lt;br /&gt;
JProgressBar aJProgressBar = new JProgressBar(JProgressBar.VERTICAL);&lt;br /&gt;
JProgressBar bJProgressBar = new JProgressBar(JProgressBar.HORIZONTAL);&lt;br /&gt;
public JProgressBar(int minimum, int maximum)&lt;br /&gt;
JProgressBar aJProgressBar = new JProgressBar(0, 500);&lt;br /&gt;
public JProgressBar(int orientation, int minimum, int maximum)&lt;br /&gt;
JProgressBar aJProgressBar = new JProgressBar(JProgressBar.VERTICAL, 0, 1000);&lt;br /&gt;
public JProgressBar(BoundedRangeModel model)&lt;br /&gt;
// Data model, initial value 0, range 0-250, and extent of 0&lt;br /&gt;
DefaultBoundedRangeModel model = new DefaultBoundedRangeModel(0, 0, 0, 250);&lt;br /&gt;
JProgressBar aJProgressBar = new JProgressBar(model);&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Labeling a JProgressBar ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To display the percentage completed [100 X (value-minimum)/(maximum-minimum)], call the &lt;br /&gt;
public void setStringPainted(boolean newValue) method with a parameter of true.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
public class ProgressBarStep {&lt;br /&gt;
  static class BarThread extends Thread {&lt;br /&gt;
    private static int DELAY = 500;&lt;br /&gt;
    JProgressBar progressBar;&lt;br /&gt;
    public BarThread(JProgressBar bar) {&lt;br /&gt;
      progressBar = bar;&lt;br /&gt;
    }&lt;br /&gt;
    public void run() {&lt;br /&gt;
      int minimum = progressBar.getMinimum();&lt;br /&gt;
      int maximum = progressBar.getMaximum();&lt;br /&gt;
      for (int i = minimum; i &amp;lt; maximum; i++) {&lt;br /&gt;
        try {&lt;br /&gt;
          int value = progressBar.getValue();&lt;br /&gt;
          progressBar.setValue(value + 1);&lt;br /&gt;
          Thread.sleep(DELAY);&lt;br /&gt;
        } catch (InterruptedException ignoredException) {&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Stepping Progress&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    final JProgressBar aJProgressBar = new JProgressBar(0, 50);&lt;br /&gt;
    aJProgressBar.setStringPainted(true);&lt;br /&gt;
    final JButton aJButton = new JButton(&amp;quot;Start&amp;quot;);&lt;br /&gt;
    ActionListener actionListener = new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        aJButton.setEnabled(false);&lt;br /&gt;
        Thread stepper = new BarThread(aJProgressBar);&lt;br /&gt;
        stepper.start();&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    aJButton.addActionListener(actionListener);&lt;br /&gt;
    frame.add(aJProgressBar, BorderLayout.NORTH);&lt;br /&gt;
    frame.add(aJButton, BorderLayout.SOUTH);&lt;br /&gt;
    frame.setSize(300, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Listening for Value Changes in a JProgressBar Component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
import javax.swing.event.ChangeEvent;&lt;br /&gt;
import javax.swing.event.ChangeListener;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    int minimum = 0;&lt;br /&gt;
    int maximum = 100;&lt;br /&gt;
    JProgressBar progress = new JProgressBar(minimum, maximum);&lt;br /&gt;
    progress.addChangeListener(new ChangeListener() {&lt;br /&gt;
      public void stateChanged(ChangeEvent evt) {&lt;br /&gt;
        JProgressBar comp = (JProgressBar) evt.getSource();&lt;br /&gt;
        int value = comp.getValue();&lt;br /&gt;
        int min = comp.getMinimum();&lt;br /&gt;
        int max = comp.getMaximum();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  ProgressBar and Task ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *     documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Sun Microsystems nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS&lt;br /&gt;
 * IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.beans.PropertyChangeEvent;&lt;br /&gt;
import java.beans.PropertyChangeListener;&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.SwingWorker;&lt;br /&gt;
public class ProgressBarDemo2 extends JPanel implements ActionListener,&lt;br /&gt;
    PropertyChangeListener {&lt;br /&gt;
  private JProgressBar progressBar;&lt;br /&gt;
  private JButton startButton;&lt;br /&gt;
  private JTextArea taskOutput;&lt;br /&gt;
  private Task task;&lt;br /&gt;
  class Task extends SwingWorker&amp;lt;Void, Void&amp;gt; {&lt;br /&gt;
    /*&lt;br /&gt;
     * Main task. Executed in background thread.&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    public Void doInBackground() {&lt;br /&gt;
      Random random = new Random();&lt;br /&gt;
      int progress = 0;&lt;br /&gt;
      // Initialize progress property.&lt;br /&gt;
      setProgress(0);&lt;br /&gt;
      // Sleep for at least one second to simulate &amp;quot;startup&amp;quot;.&lt;br /&gt;
      try {&lt;br /&gt;
        Thread.sleep(1000 + random.nextInt(2000));&lt;br /&gt;
      } catch (InterruptedException ignore) {&lt;br /&gt;
      }&lt;br /&gt;
      while (progress &amp;lt; 100) {&lt;br /&gt;
        // Sleep for up to one second.&lt;br /&gt;
        try {&lt;br /&gt;
          Thread.sleep(random.nextInt(1000));&lt;br /&gt;
        } catch (InterruptedException ignore) {&lt;br /&gt;
        }&lt;br /&gt;
        // Make random progress.&lt;br /&gt;
        progress += random.nextInt(10);&lt;br /&gt;
        setProgress(Math.min(progress, 100));&lt;br /&gt;
      }&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
    /*&lt;br /&gt;
     * Executed in event dispatch thread&lt;br /&gt;
     */&lt;br /&gt;
    public void done() {&lt;br /&gt;
      Toolkit.getDefaultToolkit().beep();&lt;br /&gt;
      startButton.setEnabled(true);&lt;br /&gt;
      taskOutput.append(&amp;quot;Done!\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public ProgressBarDemo2() {&lt;br /&gt;
    super(new BorderLayout());&lt;br /&gt;
    // Create the demo&amp;quot;s UI.&lt;br /&gt;
    startButton = new JButton(&amp;quot;Start&amp;quot;);&lt;br /&gt;
    startButton.setActionCommand(&amp;quot;start&amp;quot;);&lt;br /&gt;
    startButton.addActionListener(this);&lt;br /&gt;
    progressBar = new JProgressBar(0, 100);&lt;br /&gt;
    progressBar.setValue(0);&lt;br /&gt;
    // Call setStringPainted now so that the progress bar height&lt;br /&gt;
    // stays the same whether or not the string is shown.&lt;br /&gt;
    progressBar.setStringPainted(true);&lt;br /&gt;
    taskOutput = new JTextArea(5, 20);&lt;br /&gt;
    taskOutput.setMargin(new Insets(5, 5, 5, 5));&lt;br /&gt;
    taskOutput.setEditable(false);&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    panel.add(startButton);&lt;br /&gt;
    panel.add(progressBar);&lt;br /&gt;
    add(panel, BorderLayout.PAGE_START);&lt;br /&gt;
    add(new JScrollPane(taskOutput), BorderLayout.CENTER);&lt;br /&gt;
    setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Invoked when the user presses the start button.&lt;br /&gt;
   */&lt;br /&gt;
  public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
    progressBar.setIndeterminate(true);&lt;br /&gt;
    startButton.setEnabled(false);&lt;br /&gt;
    // Instances of javax.swing.SwingWorker are not reusuable, so&lt;br /&gt;
    // we create new instances as needed.&lt;br /&gt;
    task = new Task();&lt;br /&gt;
    task.addPropertyChangeListener(this);&lt;br /&gt;
    task.execute();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Invoked when task&amp;quot;s progress property changes.&lt;br /&gt;
   */&lt;br /&gt;
  public void propertyChange(PropertyChangeEvent evt) {&lt;br /&gt;
    if (&amp;quot;progress&amp;quot; == evt.getPropertyName()) {&lt;br /&gt;
      int progress = (Integer) evt.getNewValue();&lt;br /&gt;
      progressBar.setIndeterminate(false);&lt;br /&gt;
      progressBar.setValue(progress);&lt;br /&gt;
      taskOutput.append(String.format(&amp;quot;Completed %d%% of task.\n&amp;quot;, progress));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Create the GUI and show it. As with all GUI code, this must run on the&lt;br /&gt;
   * event-dispatching thread.&lt;br /&gt;
   */&lt;br /&gt;
  private static void createAndShowGUI() {&lt;br /&gt;
    // Create and set up the window.&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;ProgressBarDemo2&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    // Create and set up the content pane.&lt;br /&gt;
    JComponent newContentPane = new ProgressBarDemo2();&lt;br /&gt;
    newContentPane.setOpaque(true); // content panes must be opaque&lt;br /&gt;
    frame.setContentPane(newContentPane);&lt;br /&gt;
    // Display the window.&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    // Schedule a job for the event-dispatching thread:&lt;br /&gt;
    // creating and showing this application&amp;quot;s GUI.&lt;br /&gt;
    javax.swing.SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        createAndShowGUI();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Set all the values at once by using the model ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    int minimum = 0;&lt;br /&gt;
    int maximum = 100;&lt;br /&gt;
    JProgressBar progress = new JProgressBar(minimum, maximum);&lt;br /&gt;
    int newValue = 10;&lt;br /&gt;
    int newMin = 0;&lt;br /&gt;
    int newMax = 100;&lt;br /&gt;
    progress.getModel().setRangeProperties(newValue, 0, newMin, newMax, false);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  SwingWorker and ProgressBar ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *     documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Sun Microsystems nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS&lt;br /&gt;
 * IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Cursor;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.beans.PropertyChangeEvent;&lt;br /&gt;
import java.beans.PropertyChangeListener;&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.SwingWorker;&lt;br /&gt;
public class ProgressBarDemo extends JPanel implements ActionListener,&lt;br /&gt;
    PropertyChangeListener {&lt;br /&gt;
  private JProgressBar progressBar;&lt;br /&gt;
  private JButton startButton;&lt;br /&gt;
  private JTextArea taskOutput;&lt;br /&gt;
  private Task task;&lt;br /&gt;
  class Task extends SwingWorker&amp;lt;Void, Void&amp;gt; {&lt;br /&gt;
    /*&lt;br /&gt;
     * Main task. Executed in background thread.&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    public Void doInBackground() {&lt;br /&gt;
      Random random = new Random();&lt;br /&gt;
      int progress = 0;&lt;br /&gt;
      // Initialize progress property.&lt;br /&gt;
      setProgress(0);&lt;br /&gt;
      while (progress &amp;lt; 100) {&lt;br /&gt;
        // Sleep for up to one second.&lt;br /&gt;
        try {&lt;br /&gt;
          Thread.sleep(random.nextInt(1000));&lt;br /&gt;
        } catch (InterruptedException ignore) {&lt;br /&gt;
        }&lt;br /&gt;
        // Make random progress.&lt;br /&gt;
        progress += random.nextInt(10);&lt;br /&gt;
        setProgress(Math.min(progress, 100));&lt;br /&gt;
      }&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
    /*&lt;br /&gt;
     * Executed in event dispatching thread&lt;br /&gt;
     */&lt;br /&gt;
    @Override&lt;br /&gt;
    public void done() {&lt;br /&gt;
      Toolkit.getDefaultToolkit().beep();&lt;br /&gt;
      startButton.setEnabled(true);&lt;br /&gt;
      setCursor(null); // turn off the wait cursor&lt;br /&gt;
      taskOutput.append(&amp;quot;Done!\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public ProgressBarDemo() {&lt;br /&gt;
    super(new BorderLayout());&lt;br /&gt;
    // Create the demo&amp;quot;s UI.&lt;br /&gt;
    startButton = new JButton(&amp;quot;Start&amp;quot;);&lt;br /&gt;
    startButton.setActionCommand(&amp;quot;start&amp;quot;);&lt;br /&gt;
    startButton.addActionListener(this);&lt;br /&gt;
    progressBar = new JProgressBar(0, 100);&lt;br /&gt;
    progressBar.setValue(0);&lt;br /&gt;
    progressBar.setStringPainted(true);&lt;br /&gt;
    taskOutput = new JTextArea(5, 20);&lt;br /&gt;
    taskOutput.setMargin(new Insets(5, 5, 5, 5));&lt;br /&gt;
    taskOutput.setEditable(false);&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    panel.add(startButton);&lt;br /&gt;
    panel.add(progressBar);&lt;br /&gt;
    add(panel, BorderLayout.PAGE_START);&lt;br /&gt;
    add(new JScrollPane(taskOutput), BorderLayout.CENTER);&lt;br /&gt;
    setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Invoked when the user presses the start button.&lt;br /&gt;
   */&lt;br /&gt;
  public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
    startButton.setEnabled(false);&lt;br /&gt;
    setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));&lt;br /&gt;
    // Instances of javax.swing.SwingWorker are not reusuable, so&lt;br /&gt;
    // we create new instances as needed.&lt;br /&gt;
    task = new Task();&lt;br /&gt;
    task.addPropertyChangeListener(this);&lt;br /&gt;
    task.execute();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Invoked when task&amp;quot;s progress property changes.&lt;br /&gt;
   */&lt;br /&gt;
  public void propertyChange(PropertyChangeEvent evt) {&lt;br /&gt;
    if (&amp;quot;progress&amp;quot; == evt.getPropertyName()) {&lt;br /&gt;
      int progress = (Integer) evt.getNewValue();&lt;br /&gt;
      progressBar.setValue(progress);&lt;br /&gt;
      taskOutput.append(String.format(&amp;quot;Completed %d%% of task.\n&amp;quot;, task&lt;br /&gt;
          .getProgress()));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Create the GUI and show it. As with all GUI code, this must run on the&lt;br /&gt;
   * event-dispatching thread.&lt;br /&gt;
   */&lt;br /&gt;
  private static void createAndShowGUI() {&lt;br /&gt;
    // Create and set up the window.&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;ProgressBarDemo&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    // Create and set up the content pane.&lt;br /&gt;
    JComponent newContentPane = new ProgressBarDemo();&lt;br /&gt;
    newContentPane.setOpaque(true); // content panes must be opaque&lt;br /&gt;
    frame.setContentPane(newContentPane);&lt;br /&gt;
    // Display the window.&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    // Schedule a job for the event-dispatching thread:&lt;br /&gt;
    // creating and showing this application&amp;quot;s GUI.&lt;br /&gt;
    javax.swing.SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        createAndShowGUI();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using an Indeterminate JProgressBar ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Indeterminate mode: Progress bar bounces back and forth from side to side&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
public class ProgressBarStepIndeterminate {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Stepping Progress&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    final JProgressBar aJProgressBar = new JProgressBar(JProgressBar.VERTICAL);&lt;br /&gt;
    aJProgressBar.setStringPainted(true);&lt;br /&gt;
    aJProgressBar.setIndeterminate(true);&lt;br /&gt;
    frame.add(aJProgressBar, BorderLayout.NORTH);&lt;br /&gt;
    frame.setSize(300, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Virtical JProgressBar ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To change the label to a fixed string, call the public void setString(String newValue) method and &lt;br /&gt;
setStringPainted(true). &lt;br /&gt;
On a vertical progress bar, the string is drawn rotated, so a longer string will fit better.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JProgressBar;&lt;br /&gt;
class BarThread extends Thread {&lt;br /&gt;
  private static int DELAY = 500;&lt;br /&gt;
  JProgressBar progressBar;&lt;br /&gt;
  public BarThread(JProgressBar bar) {&lt;br /&gt;
    progressBar = bar;&lt;br /&gt;
  }&lt;br /&gt;
  public void run() {&lt;br /&gt;
    int minimum = progressBar.getMinimum();&lt;br /&gt;
    int maximum = progressBar.getMaximum();&lt;br /&gt;
    for (int i = minimum; i &amp;lt; maximum; i++) {&lt;br /&gt;
      try {&lt;br /&gt;
        int value = progressBar.getValue();&lt;br /&gt;
        progressBar.setValue(value + 1);&lt;br /&gt;
        Thread.sleep(DELAY);&lt;br /&gt;
      } catch (InterruptedException ignoredException) {&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class ProgressBarStep {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Stepping Progress&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    final JProgressBar aJProgressBar = new JProgressBar(JProgressBar.VERTICAL);&lt;br /&gt;
    aJProgressBar.setStringPainted(true);&lt;br /&gt;
    final JButton aJButton = new JButton(&amp;quot;Start&amp;quot;);&lt;br /&gt;
    ActionListener actionListener = new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        aJButton.setEnabled(false);&lt;br /&gt;
        Thread stepper = new BarThread(aJProgressBar);&lt;br /&gt;
        stepper.start();&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    aJButton.addActionListener(actionListener);&lt;br /&gt;
    frame.add(aJProgressBar, BorderLayout.NORTH);&lt;br /&gt;
    frame.add(aJButton, BorderLayout.SOUTH);&lt;br /&gt;
    frame.setSize(300, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>