Я пытаюсь добавить слайдер на моей странице, как индикатор выполнения. Но мой код работает некорректно.Как настроить индикатор выполнения и индикатор выполнения javaFx?
Моя задача - когда я собираюсь что-то скопировать из одного места в другое, я хочу отобразить индикатор выполнения на моей странице.
Так в javaFx я написал следующую задачу, но она не работает. Этот код работает, но я хочу показать работу в процентах, как 30%, 50% и «закончить». Но мой код не дает мне требования, поэтому, пожалуйста, помогите мне.
Мой код:
1.Declaration в прогресс бар и индикатор прогресса
@FXML
final ProgressBar progressBar = new ProgressBar();
@FXML
final ProgressIndicator progressIndicator = new ProgressIndicator();
2.Assign значения при нажатии на кнопку копирования.
@FXML
private void handleOnClickButtonAction(MouseEvent event) {
if (fromLabel.getText().isEmpty()
|| toLabel.getText().isEmpty()
|| fromLabel.getText().equalsIgnoreCase("No Directory Selected")
|| toLabel.getText().equalsIgnoreCase("No Directory Selected")) {
// Nothing
} else {
progressBar.setProgress(0.1f);
progressIndicator.setProgress(progressBar.getProgress());
this.directoryCount.setText("Please Wait !!!");
}
}
Этот код показывает мне только завершение 10% затем непосредственно показывает «сделано», но я хочу весь процесс в процентах, как 10,20,30, .. и т.д., а затем «сделано».
Мой код копии:
double i = 1;
while (rst.next()) {
File srcDirFile = new File(fromLabel.getText() + "/" + rst.getString("nugget_media_files"));
File dstDirFile = new File(toLabel.getText() + "/" + rst.getString("nugget_media_files"));
File dstDir = new File(toLabel.getText() + "/" + rst.getString("nugget_directory"));
if (srcDirFile.lastModified() > dstDirFile.lastModified()
|| srcDirFile.length() != dstDirFile.length()) {
copyDirectory(srcDirFile, dstDirFile, dstDir);
}
this.currentNuggetCount = i/this.nuggetFolderSize;
System.out.println("Nugget Count : " + this.currentNuggetCount);
Platform.runLater(new Runnable() {
@Override
public void run() {
progressBar.setProgress(1.0f);
progressIndicator.setProgress(progressBar.getProgress());
}
});
++i;
}
Это copyDirectory
метод:
private static void copyDirectory(File srcDir, File dstDir,File destNugget) {
System.out.println(srcDir+" >> "+dstDir);
if(!destNugget.exists()) {
destNugget.mkdirs();
}
if (srcDir.isDirectory()) {
if (!dstDir.exists()) {
dstDir.mkdirs();
}
String[] children = srcDir.list();
for (int i=0; i<children.length; i++) {
copyDirectory(new File(srcDir, children[i]),
new File(dstDir, children[i]),
destNugget);
}
} else {
InputStream in = null;
try {
in = new FileInputStream(srcDir);
OutputStream out = new FileOutputStream(dstDir);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (IOException ex) {
System.out.println("Exceptio "+ex);
} finally {
try {
in.close();
} catch (IOException ex) {
System.out.println("Exceptio "+ex);
}
}
}
}
вы должны обновить 'ProgressBar' из процедуры копирования. Какой код вы используете для копирования? –