2007年10月15日月曜日

Progress Barを表示する



プログレスバーを表示する方法です
今回はNetBeans Platform右下部に表示されるプログレスバーについてです
まずはライブラリに「Progress API」を追加して下さい

ProgressHandle handle =
  ProgressHandleFactory.createHandle("Sample Progress Bar");

ProgressHandleFactoryクラスを使い、ProgressHandleクラスを生成します
createHandle()メソッドの第1引数は表示文字列になります
プログレスバーを動作させるには別スレッドの生成が必要になりますので、実際には下記のようになります



RequestProcessor.getDefault().post(new Runnable() {
  public void run() {
    public void run() {
      ProgressHandle handle =
        ProgressHandleFactory.createHandle("Sample Progress Bar");
      try {
        handle.start();
        //以降に実際の処理を記述します
        for(int i = 1; int < 100; i++) {
          Thread.sleep(1000);
        }
      } catch (InterruptedException ex) {
        Exceptions.printStackTrace(ex);
      } finally {
        handle.finish();
      }
    }
  });

RequestProcessorクラスはスレッドを実行するクラスと考えて下さい
今回は特に処理を記述していないので、Threadクラスのsleep()メソッドで一時的にスレッドを停止しています
この処理時間が短いと表示されないように見えますので、その場合は上記のようにsleep()メソッドを使うなどして時間を調整して下さい
また、キャンセル用の「×」ボタンを表示するにはCancellableオブジェクトを引数に割り当てて下さい
実装した箇所のみを抜粋すると以下のようになります

ProgressHandle handle =
  ProgressHandleFactory.createHandle("Sample Progress Bar", public boolean cancel() {
      return true;
});


進捗率を表示することも可能です



方法はProgressHandleクラスのstart()メソッドに総工程数を設定し、次にprogress()メソッドの引数に消化工程数を設定します
上記「×」(キャンセルボタン)と進捗率を表示する実装は下記の通りです

RequestProcessor.getDefault().post(new Runnable() {
  public void run() {
    public void run() {
      ProgressHandle handle =
        ProgressHandleFactory.createHandle("Sample Progress Bar", public boolean cancel() {
      return true;
    }););
      try {
        handle.start();
        //以降に実際の処理を記述します
        Thread.sleep(5000);
      } catch (InterruptedException ex) {
        Exceptions.printStackTrace(ex);
      } finally {
        handle.finish();
      }
    }
  });

上記のようにNetBeansのAPI(Progress API)を追加するだけで簡単にProgress Barが作れます
ぜひお試しください

0 件のコメント: