Google検索エンジン

トップページ » Javaアプリケーション開発 » JProgressBarプログレスバーの表示


JProgressBarの使い方(プログレスバーを表示する方法)

  • プログレスバーを表示するときはJProgressBarクラスを使用します。 プログレスバーは、タスクの進捗状況を視覚的に表示します。 タスク処理の進行に合わせて、進捗バーに処理完了のパーセンテージが表示されます。 このパーセンテージは、通常、棒状のインジケータで表されます。 最初、このインジケータの内部は空ですが、処理の進行とともに塗りつぶされていきます。 時間のかかる処理の経過状況などを表示するのに用いられます。

    下のサンプルソースコードでは、タスクの現在の状態を問い合わせ、戻り値を使って進捗バーを更新しています。 処理完了のパーセンテージをテキストでも表示しています。


    JProgressBarを使ってプログレスバーを表示した例
    JProgressBarを使ってプログレスバーを表示したサンプル画像
    サンプルソースコード
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.beans.*;
    import java.util.Random;
    
    class JProgressBarSample extends JPanel
       implements ActionListener, PropertyChangeListener {
    
       private JProgressBar progressBar;
       private JButton startButton;
       private JTextArea taskOutput;
       private Task task;
    
       class Task extends SwingWorker<Void, Void> {
          public Void doInBackground() {
             Random random = new Random();
             int progress = 0;
             setProgress(0);
             while (progress < 100) {
                try {
                   Thread.sleep(random.nextInt(1000));
                } catch (InterruptedException ignore) {}
                progress += random.nextInt(10);
                setProgress(Math.min(progress, 100));
             }
             return null;
          }
          public void done() {
             Toolkit.getDefaultToolkit().beep();
             startButton.setEnabled(true);
             taskOutput.append("処理終了\n");
          }
       }
       public JProgressBarSample() {
          super(new BorderLayout());
    
          startButton = new JButton("処理開始");
          startButton.setActionCommand("start");
          startButton.addActionListener(this);
    
          progressBar = new JProgressBar(0, 100);
          progressBar.setValue(0);
          progressBar.setStringPainted(true);
          progressBar.setPreferredSize(new Dimension(380,25));
    
          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));
    
       }
       public void actionPerformed(ActionEvent evt) {
          startButton.setEnabled(false);
          setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
          task = new Task();
          task.addPropertyChangeListener(this);
          task.execute();
       }
       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()));
          } 
       }
       private static void createAndShowGUI() {
          JFrame frame = new JFrame(
                       "JProgressBarを使ってプログレスバーを表示");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
          JComponent newContentPane = new JProgressBarSample();
          newContentPane.setOpaque(true);
          frame.setContentPane(newContentPane);
    
          frame.pack();
          frame.setVisible(true);
       }
       public static void main(String[] args) {
         SwingUtilities.invokeLater(new Runnable() {
             public void run() {
                createAndShowGUI();
             }
          });
       }
    }
    

Swingでアプリのパーツを表示する方法
書籍の紹介
  • プログラマが知るべき97のこと
    プログラマが知るべき97のこと
    発売:2010/12/18
    定価:1,995円
    著者:和田 卓人
    出版:オライリージャパン
    内容:世界中で活躍するプログラマによる97本のエッセイを収録した書籍です。プログラミングにおいてもっとも重要な事柄は何か、バージョン管理やテスティング、設計原則とコーディングテクニック、また腕を磨くための勉強法などについて、経験豊かなプログラマが自らの体験を踏まえて解説します。
  • 明解Java 入門編
    明解Java 入門編
    発売:2007/08/08
    定価:2,730円
    著者:柴田 望洋
    出版:ソフトバンククリエイティブ
    内容:丁寧な解説と適切なサンプルプログラム248編と、豊富で分かりやすい図表278点で、Javaの基礎から学習できます。Javaプログラミング初心者におすすめの一冊です。
  • Effective Java 第2版 (The Java Series)
    Effective Java
    発売:2008/11/27
    定価:3,780円
    著者:Joshua Bloch他
    出版:ピアソンエデュケーション
    内容:著者のGoogle, Sun Microsystemsにおけるソフトウェア開発で得た知識・経験をまとめています。Javaプログラミングをする全てのSE必読の書籍です。
  • Webサイト制作・運営に役立つ! ホームページ担当者が最初に覚える100の基本
    Webサイト制作・運営に役立つ! ホームページ担当者が最初に覚える100の基本
    発売:2010/06/05
    定価:1,575円
    著者:服部 洋二
    出版:ソーテック社
    内容:初心者向けの書籍です。中小企業のWebサイトに携わる方向けの書籍ですので、個人のウェブサイトにも適用しやすい内容となっています。
おすすめBTOパソコン通販サイト
  • デスクトップPC(ビジネス向け・クリエイター向け・ゲーム向け)、ノートPC、パーツ、周辺機器、ソフト(OS・ゲーム・セキュリティなど)幅広い分野の商品を扱っています。販売価格の幅が広く、品揃えも充実しています。
  • 「FRONTIERダイレクトストア」は、自社工場で製造したFRONTIERブランドのパソコンを日本全国に販売する株式会社KOUZIROのインターネットショッピングサイトです。カスタマイズ可能なBTOゲームパソコンも販売しています。