【发布时间】:2014-12-12 18:11:14
【问题描述】:
我已经尝试从一个库接收字节来设置我的 JProgressBar 更新很长一段时间,但不幸的是 我没有得到我想要的结果。
问题是我不知道如何从 lib 接收字节以及如何在接收字节时更新 JProgressBar 以使用 java 制作浏览器
这是我尝试过的代码:
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER){
String az = jTextField1.getText();
if(az.contains("1")){
String hh = WorkSpace.jTextField1.getText();
URLConnection conn = null;
InputStream in = null;
try {
URL url = new URL(hh);
conn = url.openConnection();
in = conn.getInputStream();
int length = conn.getContentLength();
int current = 0;
WorkSpace.jProgressBar1.setMaximum(length);
WorkSpace.jProgressBar1.setValue(0);
byte[] buffer = new byte[1024];
int numRead = 0;
while ((numRead = in.read(buffer)) != -1) {
current=0;
current += numRead;
WorkSpace.jProgressBar1.setValue(current);
}
} catch (Exception e) {
}
}
如果有人知道如何做到这一点,请告诉我。
【问题讨论】:
-
Delete 'current=0;' in while a test again
-
1- 不要将 KeyListener 与 txt 组件一起使用,而是使用 ActionListerner; 2- Swing 是单线程的,这意味着任何长时间运行或阻塞的操作都会阻止 UI 更新,所以即使你用循环解决了问题,它也不会更新,直到 actionPerformed 方法退出。相反,您可以使用 SwingWorker
标签: java swing netbeans jprogressbar