Индикатор выполнения при сохранении в Java

Привет у меня есть эти строки кодов в Java NetBeans, которые сохраняют результат p2 в Result.txt

System.setOut(new PrintStream(new FileOutputStream("Result.txt")));
String line1;
Process p2= Runtime.getRuntime().exec(command);
BufferedReader in = new BufferedReader(new InputStreamReader(p2.getInputStream()) );
while ((((line1 = in.readLine()) != null))||i<101)
{

   System.out.println(line1);
   i=i+10;
   jProgressBar1.setValue(i);

}
in.close();

JOptionPane.showMessageDialog(null,"successfull");

Код показывает мне индикатор выполнения только тогда, когда я =100, то есть когда индикатор выполнения заполнен и цикл while завершен.

Я хочу, чтобы код показывал мне индикатор выполнения на 10,20,30,40,50,60,70,80,90,100 при сохранении.

Спасибо.

3 ответа

Вы выполняете длительную операцию в потоке диспетчеризации событий, которая не позволяет ему выполнять свою работу (рисование и, таким образом, отображает ход выполнения на индикаторе выполнения), пока длительная операция не будет завершена.

Выполните эту длительную операцию в отдельном потоке, например, используя SwingWorker. И прочитайте учебник Swing по параллелизму, чтобы понять больше о потоках и свинге.

В моем затмении ваш код может правильно отображаться в режиме отладки. И я думаю, что ваш вопрос "i=i+10;" Вы можете установить команду show more i = i+1.Может быть, вы можете получить, что хотите.

Используйте метод validate, чтобы перекрасить индикатор выполнения после обновления.

 while ((((line1 = in.readLine()) != null))||i<101)
    {

   ...
       jProgressBar1.setValue(i);
       jProgressBar1.repaint()
    }
Другие вопросы по тегам