0

嗨,我在 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");

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

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

谢谢你。

4

3 回答 3

2

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

在单独的线程中执行这个冗长的操作,例如使用SwingWorker 。并阅读有关并发的 Swing 教程以了解有关线程和 Swing 的更多信息。

于 2013-06-02T08:14:54.173 回答
0

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

于 2013-06-02T08:24:46.693 回答
-2

更新后使用 validate 方法重绘进度条

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

   ...
       jProgressBar1.setValue(i);
       jProgressBar1.repaint()
    }
于 2013-06-02T08:14:10.420 回答