2016-05-30 4 views
0

Я делаю программу, которая исправляет некоторые файлы, и я хотел использовать ProgressBar в качестве индикатора выполнения, однако индикатор выполнения остается полностью заполненным и не будет сброшен после его завершения. Это метод, который обновляет его.JavaFX ProgressBar Wont Reset

for(int i = 0; i < paths.getItemCount(); i++) 
{  
    current_progress += 0.02; 
    System.out.println("verifiing: " +paths.getItems()[i]); 
    File bugger = new File(paths.getItems()[i]); 

    File dst = new File(starmade_path + "\\data\\image-resource\\ " + names.getItems()[i]); 
    Files.copy(bugger.toPath(), dst.toPath(), REPLACE_EXISTING, COPY_ATTRIBUTES, NOFOLLOW_LINKS); 
    ProgressBar.setProgress(current_progress); 
} 

Я уже попробовал этот

for(int i = 0; i < paths.getItemCount(); i++) 
{   
    current_progress += 0.02; 
    System.out.println("verifiing: " +paths.getItems()[i]); 
    File bugger = new File(paths.getItems()[i]); 

    File dst = new File(starmade_path + "\\data\\image-resource\\ " + names.getItems()[i]); 
    Files.copy(bugger.toPath(), dst.toPath(), REPLACE_EXISTING, COPY_ATTRIBUTES, NOFOLLOW_LINKS); 
    ProgressBar.setProgress(current_progress); 
} 

ProgressBar.setProgress(0); 

Но когда я использую это не будет показывать никакого прогресса вообще. Thread.sleep() тоже этого не сделает.

+1

Вы должны опубликовать полный код, чтобы мы могли чтобы определить, где проблема. – DVarga

+0

Наиболее вероятная причина в том, что вы не используете многопоточность правильно, но если вы не отредактируете свой вопрос, чтобы включить [MCVE], никто не может действительно знать. –

ответ

0
  1. Не записывайте код, как этот «ProgressBar.setProgress», этот синтаксис должен быть зарезервирован для статических вызовов с использованием класса.

сделать ваши объекты как

ProgressBar progressBar = new ProgressBar(); 

или

@FXML 
ProgressBar progressBar; 

2. Этот цикл работ

float current_progress = 0f;  
for(int i = 0; i < 10; i++) { 
      current_progress += 0.02; 
      progressBar.setProgress(current_progress); 
     } 

и прогресс бар прогрессирует до 20% от ширины, поэтому ваш код синтаксически правильный, возможно, это sue - максимальное значение paths.getItemCount() слишком велико, чтобы увидеть какой-то значимый прогресс, проверьте свой результат на «verifiing:» + paths.getItems() [i] для этого

+0

Да, похоже, что он идет быстро, есть ли способ сделать этот метод медленнее? – Agronaut022

+0

см. Раздел Переходы по этой ссылке https://examples.javacodegeeks.com/desktop-java/javafx/javafx-animation-example/ –

Смежные вопросы