2017-01-20 19 views
0

我是新手「編程的東西,試着學習」 我的「app」運行bat測試文件,所有結果都印在textarea上,效果很好 但我現在的目標是提供進度條,以顯示印刷到文本區域時的進度。 我該怎麼辦?我已閱讀了一些指南,並嘗試了一些東西,但它對我無效javafx,如何在打印到文本區域時顯示進度條

這是運行蝙蝠文件的按鈕背後的方法

public void RunTestScrip() throws IOException { 

    Process p = Runtime.getRuntime().exec(path); 

    final InputStream stream = p.getInputStream(); 
    new Thread(new Runnable() { 
     public void run() { 
      BufferedReader reader = null; 
      try { 
       reader = new BufferedReader(new InputStreamReader(stream)); 
       String line = null; 
       while ((line = reader.readLine()) != null) {      
        console.appendText("\n" + line); 
        progressBar.progressProperty().bind(RunTestScrip()); // dont know how to use it right in my code 

       } 
      } catch (Exception e) { 
       // TODO 
      } finally { 
       if (reader != null) { 
        try { 
         reader.close(); 
        } catch (IOException e) { 
         // ignore 
        } 
       } 
      } 
     } 
    }).start(); 
+2

除非您知道總共要接收多少數據,否則您無法更新進度條(進度將設置爲什麼?)。你有權訪問這些信息嗎? –

+1

如果你沒有數據,你可以顯示'ProgressIndicator'值爲'-1',直到工作完成,這樣用戶不會覺得無聊並打破鍵盤:)。 – GOXR3PLUS

+0

請自己幫忙,瞭解試用資源。我確定你不再使用Java 6了,所以你應該能夠擺脫那些最後的塊,並且在一個步驟中聲明並初始化'reader'變量... – fabian

回答

1

我不認爲腳本t能夠更新javafx ProgressBar。最簡單的方法是創建自己的關於進度的規則(可能基於您當前附加到控制檯的輸出)。

關於如何在javafx中創建一個可用的Progressbar,以下是一個不錯的tutorial。希望你能找到一種方法來相應地更新進度。

編輯:

我加的什麼可以在案件中所提供的鏈接斷裂的教程中發現了一個小例子。

// initialization of a progressBar with 'indeterminate progress' 
ProgressBar pb = new ProgressBar(-1.0D); 

// to set the current state of a progress bar you simply do the following 
pb.setProgress(current_progress); 

請注意,進度是介於0.0D和1.0D之間的值(例如百分比)。 值-1.0D表示進度不確定。

+0

我可以請求你添加你的答案有更多的背景。只有鏈接的答案很難理解,並且如果網站停工或無法正常工作,容易失效。如果您能夠複製您在本文中提到的鏈接/博客的最相關部分,它將有助於提問者和未來的讀者。我加入 – RBT

+1

感謝你, if語句這樣 '如果(line.contains( 「[INFO] BUILD SUCCESS」)) \t \t \t { \t \t \t \t progressBar.setProgress(0.7); \t \t \t}' 對我來說這已經足夠好了 –