保存在java中的进度条

时间:2013-06-02 08:05:29

标签: java swing joptionpane fileoutputstream jprogressbar

嗨我在java netbeans中有这些代码行,它们在Result.txt中保存了p2的结果

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");

代码仅在i = 100时显示进度条,即进度条填充且while循环完成时。

我希望代码在保存时显示10,20,30,40,50,60,70,80,90,100的进度条。

谢谢。

3 个答案:

答案 0 :(得分:2)

你正在事件调度线程中进行冗长的操作,这会阻止它完成其工作(绘制,从而在进度条中显示进度),直到冗长的操作完成。

例如,使用SwingWorker在单独的线程中执行此冗长操作。并阅读Swing tutorial on concurrency以了解有关线程和摆动的更多信息。

答案 1 :(得分:0)

在我的eclipse中,你的代码可以在调试模式下正确显示。我认为你的问题是“i = i + 10;”可以比它显示的速度快。你可以设置命令显示更多i = i + 1.可能你可以得到你想要的。

答案 2 :(得分:-2)

使用验证方法在更新后重新绘制进度条

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

   ...
       jProgressBar1.setValue(i);
       jProgressBar1.repaint()
    }