【发布时间】:2015-03-14 20:09:35
【问题描述】:
我想使用JProgressBar 来监控将字节数组的内容复制到JTextArea 的进度。事实上,我已经阅读了很多关于这方面的教程,但我仍然卡在下面的代码中:
byte[] encodedImg = bOut.toByteArray();
int length = encodedImg.length;
int current = 0;
JProgressBar progressBar = new JProgressBar();
progressBar.setMaximum(length);
progressBar.setValue(0);
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesReadSoFar = 0;
while(length != -1)
{
out.write(buffer);
current += bytesReadSoFar;
textArea.setText(String.valueOf(buffer));
progressBar.setValue(current);
}
很遗憾,我仍然无法获得我想要的进度。谁能给我提示一下。
【问题讨论】:
-
你要么阻塞了Event Dispatching Thread,要么违反了Swing的单线程规则,看看Concurrency in Swing,Worker Threads and SwingWorker
-
int length = encodedImg.length;我刚刚注意到循环正在length上进行测试,但该变量的值在循环体中没有改变(暗示无限循环)! ...发布 MCVE。
标签: java swing io outputstream jprogressbar