Java Swingworker Progress Bar Example

SwingWorker and ProgressBar : JProgressBar « Swing « Java Tutorial

          /*  * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  *  *   - Redistributions of source code must retain the above copyright  *     notice, this list of conditions and the following disclaimer.  *  *   - Redistributions in binary form must reproduce the above copyright  *     notice, this list of conditions and the following disclaimer in the  *     documentation and/or other materials provided with the distribution.  *  *   - Neither the name of Sun Microsystems nor the names of its  *     contributors may be used to endorse or promote products derived  *     from this software without specific prior written permission.  *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */                      import                    java.awt.BorderLayout;                      import                    java.awt.Cursor;                      import                    java.awt.Insets;                      import                    java.awt.Toolkit;                      import                    java.awt.event.ActionEvent;                      import                    java.awt.event.ActionListener;                      import                    java.beans.PropertyChangeEvent;                      import                    java.beans.PropertyChangeListener;                      import                    java.util.Random;                      import                    javax.swing.BorderFactory;                      import                    javax.swing.JButton;                      import                    javax.swing.JComponent;                      import                    javax.swing.JFrame;                      import                    javax.swing.JPanel;                      import                    javax.swing.JProgressBar;                      import                    javax.swing.JScrollPane;                      import                    javax.swing.JTextArea;                      import                    javax.swing.SwingWorker;                      public                                class                    ProgressBarDemo                      extends                    JPanel                      implements                    ActionListener,     PropertyChangeListener {                      private                    JProgressBar progressBar;                      private                    JButton startButton;                      private                    JTextArea taskOutput;                      private                    Task task;                      class                    Task                      extends                    SwingWorker<Void, Void> {          /*      * Main task. Executed in background thread.      */          @Override                      public                    Void doInBackground() {       Random random =                      new                    Random();                      int                    progress = 0;          // Initialize progress property.                    setProgress(0);                      while                    (progress < 100) {          // Sleep for up to one second.                                try                    {           Thread.sleep(random.nextInt(1000));         }                      catch                    (InterruptedException ignore) {         }          // Make random progress.                    progress += random.nextInt(10);         setProgress(Math.min(progress, 100));       }                      return                    null;     }          /*      * Executed in event dispatching thread      */          @Override                      public                                void                    done() {       Toolkit.getDefaultToolkit().beep();       startButton.setEnabled(true);       setCursor(null);          // turn off the wait cursor                    taskOutput.append("Done!\n");     }   }                      public                    ProgressBarDemo() {                      super          (            new                    BorderLayout());          // Create the demo's UI.                    startButton =                      new                    JButton("Start");     startButton.setActionCommand("start");     startButton.addActionListener(            this          );      progressBar =                      new                    JProgressBar(0, 100);     progressBar.setValue(0);     progressBar.setStringPainted(true);      taskOutput =                      new                    JTextArea(5, 20);     taskOutput.setMargin(            new                    Insets(5, 5, 5, 5));     taskOutput.setEditable(false);      JPanel panel =                      new                    JPanel();     panel.add(startButton);     panel.add(progressBar);      add(panel, BorderLayout.PAGE_START);     add(            new                    JScrollPane(taskOutput), BorderLayout.CENTER);     setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));    }          /**    * Invoked when the user presses the start button.    */                      public                                void                    actionPerformed(ActionEvent evt) {     startButton.setEnabled(false);     setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));          // Instances of javax.swing.SwingWorker are not reusuable, so                    // we create new instances as needed.                    task =                      new                    Task();     task.addPropertyChangeListener(            this          );     task.execute();   }          /**    * Invoked when task's progress property changes.    */                      public                                void                    propertyChange(PropertyChangeEvent evt) {                      if                    ("progress"          == evt.getPropertyName()) {                      int                    progress = (            Integer          ) evt.getNewValue();       progressBar.setValue(progress);       taskOutput.append(String.format("Completed %d%% of task.\n", task           .getProgress()));     }   }          /**    * Create the GUI and show it. As with all GUI code, this must run on the    * event-dispatching thread.    */                      private                                static                                void                    createAndShowGUI() {          // Create and set up the window.                    JFrame frame =                      new                    JFrame("ProgressBarDemo");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);          // Create and set up the content pane.                    JComponent newContentPane =                      new                    ProgressBarDemo();     newContentPane.setOpaque(true);          // content panes must be opaque                    frame.setContentPane(newContentPane);          // Display the window.                    frame.pack();     frame.setVisible(true);   }                      public                                static                                void                    main(String[] args) {          // Schedule a job for the event-dispatching thread:                    // creating and showing this application's GUI.                    javax.swing.SwingUtilities.invokeLater(            new                    Runnable() {                      public                                void                    run() {         createAndShowGUI();       }     });   } }        
14.32.JProgressBar
14.32.1. JProgressBar JProgressBar
14.32.2. Creating a JProgressBar Component with an Unknown Maximum
14.32.3. A progress bar is used for lengthy tasks.
14.32.4. Labeling a JProgressBar Labeling a JProgressBar
14.32.5. Virtical JProgressBar Virtical JProgressBar
14.32.6. Creating a modal progress dialog
14.32.7. Set all the values at once by using the model
14.32.8. Using an Indeterminate JProgressBar Using an Indeterminate JProgressBar
14.32.9. Displaying the Percentage Done on a JProgressBar Component
14.32.10. Getting and Setting the Values of a JProgressBar Component
14.32.11. Listening for Value Changes in a JProgressBar Component
14.32.12. Handling JProgressBar Events: notification of data model changes through a ChangeListener Handling JProgressBar Events: notification of data model changes through a ChangeListener
14.32.13. ProgressBar and Task
14.32.14. SwingWorker and ProgressBar
14.32.15. Customizing JProgressBar Look and Feel

phillipsfrodfurgurn.blogspot.com

Source: http://www.java2s.com/Tutorial/Java/0240__Swing/SwingWorkerandProgressBar.htm

0 Response to "Java Swingworker Progress Bar Example"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel