Java 如何从lib接收字节以更新JProgressBar?
很长一段时间以来,我一直试图从lib接收字节来设置我的JProgressBar更新,但不幸的是 我没有得到我想要的结果 问题是,我不知道如何从lib接收字节,以及如何在接收字节的同时更新JProgressBar——所有这些都是为了让浏览器使用java 这是我尝试过的代码:Java 如何从lib接收字节以更新JProgressBar?,java,swing,netbeans,jprogressbar,Java,Swing,Netbeans,Jprogressbar,很长一段时间以来,我一直试图从lib接收字节来设置我的JProgressBar更新,但不幸的是 我没有得到我想要的结果 问题是,我不知道如何从lib接收字节,以及如何在接收字节的同时更新JProgressBar——所有这些都是为了让浏览器使用java 这是我尝试过的代码: private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) { if (
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) {
}
}
如果有人知道如何执行此操作,请告诉我。只需将输入流包装在
ProgressMonitorInputStream
中即可。它将为您管理自己的JProgressBar
。Delete'current=0;在再次测试1时,不要将KeyListener与txt组件一起使用,而是使用ActionListener;2-Swing是单线程的,这意味着任何长时间运行或阻塞的操作都会阻止UI的更新,因此即使您解决了循环的问题,它也不会更新,直到actionPerformed方法退出。相反,你可以使用SwingWorker。你介意给我看一些如何使用ProgressMonitorInputStream的代码吗?谢谢