在以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
的内容,但没有找到任何答案我让进度条取得进展...以及如何正确执行...