嗨我在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的进度条。
谢谢。
答案 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()
}