JavaFX + FXML进度栏未进行?

时间:2019-02-15 09:50:20

标签: java javafx progress-bar javafx-8

在以FXML配置为动力的JavaFX应用中,我的ProgressBar遇到了麻烦。

或者我想说的是,我从未在JavaFX中编写REAL进度条,而在学习期间只是在Swing中伪造了一个。

因此我有一个Controller,在此控制器中,我有:

@FXML
ProgressBar progressBar;

然后我有一个方法:

@FXML
private void handleCommand() {
    if (handlePasswordField()) {
        progressBar.setProgress(0);
        progressBar.setProgress(10);
        handleDocker(CMD + DOCKER_MYSQL_PULL, APPLICATION_NAME);
        progressBar.setProgress(50);
        handleDocker(CMD + DOCKER_MYSQL_RUN + rootPassword + DOCKER_MYSQL_RUN_SUFFIX, APPLICATION_NAME);
        progressBar.setProgress(100);
        Platform.exit();
    }
}

handleDocker()方法:

private void handleDocker(String command, String applicationName) {
    AppUtility.runWindowsCommand(command, applicationName);
}

AppUtility.runWindowsCommand()

public static void runWindowsCommand(String command, String applicationName) {
    try {
        Process process = Runtime.getRuntime().exec(command);
        System.out.println(applicationName + process.getOutputStream());
        BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream()));
        String sout;
        while ((sout = reader.readLine()) != null){
            System.out.println(applicationName + sout);
        }                   
    } catch (IOException e) {
        e.printStackTrace();
    }
}

最后,这可能可以帮助构建进度条,runWindowsCommand()方法的示例控制台输出:

DOCKER: java.io.BufferedOutputStream@6fda88a4
DOCKER: Using default tag: latest
DOCKER: latest: Pulling from library/mysql
DOCKER: Digest: sha256:a571337738c9205427c80748e165eca88edc5a1157f8b8d545fa127fc3e29269
DOCKER: Status: Image is up to date for mysql:latest
DOCKER: java.io.BufferedOutputStream@227fe897

我假设我的处理方法非常错误...但是我在StackOverflow和互联网上阅读了很多有关ProgressBar的内容,但没有找到任何答案我让进度条取得进展...以及如何正确执行...

0 个答案:

没有答案