Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从lib接收字节以更新JProgressBar?_Java_Swing_Netbeans_Jprogressbar - Fatal编程技术网

Java 如何从lib接收字节以更新JProgressBar?

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 (

很长一段时间以来,我一直试图从lib接收字节来设置我的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) {

    }
    }

如果有人知道如何执行此操作,请告诉我。

只需将输入流包装在
ProgressMonitorInputStream
中即可。它将为您管理自己的
JProgressBar

Delete'current=0;在再次测试1时,不要将KeyListener与txt组件一起使用,而是使用ActionListener;2-Swing是单线程的,这意味着任何长时间运行或阻塞的操作都会阻止UI的更新,因此即使您解决了循环的问题,它也不会更新,直到actionPerformed方法退出。相反,你可以使用SwingWorker。你介意给我看一些如何使用ProgressMonitorInputStream的代码吗?谢谢