javafx,如何在打印到文本区域时显示进度条

时间:2017-01-20 22:39:51

标签: java batch-file javafx progress-bar

我是“编程事物的新手,尝试学习。 我的“app”运行bat测试文件,并且所有结果都打印在textarea中,它运行良好。 但我现在的目标是提供进度条,以便在打印到文本区域时显示进度。 我该怎么做 ?我已经阅读了一些指南,但我尝试了一些东西,但它对我不起作用

这是运行bats文件的按钮背后的方法

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();

1 个答案:

答案 0 :(得分:1)

我不认为该脚本能够更新javafx ProgressBar。最简单的方法是创建自己的进度规则(可能基于您当前附加到控制台的输出)。

这是一个关于如何在javafx中创建工作进度条的好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表示进度不确定。