2017-07-04 10 views
0

私はSWTウィザードのアプリケーションを実装しています。このアプリケーションでは、プログラムでファイルを解凍しました。解凍中にプログレスバーが必要です。あなたは、進捗モニターに内蔵され使用することができますJFaceのWizardを使用している場合、解凍のための以下のコード、私はこのように、このメソッドを呼び出しウィザードページでSWTウィザードで解凍時に進行状況バーが必要

public static void extract(File zipfile, File outdir) 
     { 
     try 
     { 
      ZipInputStream zin = new ZipInputStream(new FileInputStream (zipfile)); 
      ZipEntry entry; 
      String name, dir; 
      while ((entry = zin.getNextEntry()) != null) 
      { 
      name = entry.getName(); 
      if(entry.isDirectory()) 
      { 
       mkdirs(outdir,name); 
       continue; 
      } 
      /* this part is necessary because file entry can come before 
      * directory entry where is file located 
      * i.e.: 
      * /foo/foo.txt 
      * /foo/ 
      */ 
      dir = dirpart(name); 
      if(dir != null) 
       mkdirs(outdir,dir); 

      extractFile(zin, outdir, name); 

      } 

      zin.close(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     } 

btnUnzip.addListener(SWT.Selection, new Listener() { 

      @Override 
      public void handleEvent(Event event) { 

        File file = new File(text.getText()); 
        File file1 = new File(textToSaveUnzipFile.getText()); 
        UnzipUtility.extract(file, file1); 
     } 
    } 
+0

「SWTウィザード」とはどういう意味ですか?これは、JFaceの 'Wizard' /' WizzrdDialog'/'WizardPage'クラス(進捗モニタが組み込まれています)を使用しているのですか?これはちょうど普通の' SWT'ですか? –

+0

SWTプロジェクトのwizardDialogを使用 – Biswabir

+0

あなたの返信ありがとう、もし私がWizardPageクラスを拡張すれば、どのように可能です。 – Biswabir

答えて

0

を見つけてください。ウィザード。この呼び出しはWizardまたはWizardPageにすることができ、進捗コール

getContainer().run(true, true, runnable); 

を表示するには

setNeedsProgressMonitor(true); 

:あなたのウィザードクラスの呼び出しのコンストラクタで

ここで、runnableは、IRunnableWithProgressを実装するクラスです。このクラスのrunメソッドは、次のようになります。

@Override 
public void run(final IProgressMonitor monitor) 
    throws InterruptedException 
{ 
    monitor.beginTask("Title", .. number of work steps ..); 

    try 
    { 
    while (not finished) { 
     ... do a small amount of work 

     // Update progress 
     monitor.worked(1); 
    } 
    } 
    finally 
    { 
    monitor.done(); 
    } 
} 
+0

それは多くのおかげさまで働いています... – Biswabir

+0

開始タスク100で作​​業ステップを設定した後、私はmonitor.worked(100)を使用した後、進捗バーを質問する質問があります。 unzip機能を完了する前に100を示す進行状況バーを解凍する時。 – Biswabir

+0

進捗状況を表示するには、小さなビットで作業を行う必要があることを示すには、各ビットの後に「働き」を呼び出します。これを行うことができない場合、あなたはアニメーションの進歩を持つことはできません。 –

関連する問題