2017-01-20 20 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}' 对我来说这已经足够好了 –