2013-07-19 79 views
0

我正在使用以下代码使用PUT请求将文件上载到服务器。这工作正常。但我想添加一个JProgressBar这个代码,你如何建议我这样做?我不确定要使用哪些类来实现我需要的进度条。需要将JProgressBar添加到swing应用程序的帮助

RequestEntity re = new RequestEntity() { 
    @Override 
    public long getContentLength() { 
     // TODO Auto-generated method stub 
     return file.length(); 
    } 

    @Override 
    public String getContentType() { 
     // TODO Auto-generated method stub 
     return "application/octet-stream"; 
    } 

    @Override 
    public boolean isRepeatable() { 
     // TODO Auto-generated method stub 
     return true; 
    } 

    @Override 
    public void writeRequest(OutputStream outputStream) throws IOException { 
     // TODO Auto-generated method stub 
     InputStream in = new FileInputStream(file); 
     try { 
      int l; 
      byte[] buffer = new byte[1024]; 
      while ((l = in.read(buffer)) != -1) { 
       outputStream.write(buffer, 0, l); 
      } 
     } finally { 
      in.close(); 
     } 
    } 
}; 
+0

你还没有显示任何GUI代码,你有吗?或者你期望别人写它? – roippi

+0

看看[这](http://stackoverflow.com/questions/12185924/show-progress-during-ftp-file-upload-in-a-java-applet/12186144#12186144)和[这里]( http://stackoverflow.com/questions/16272842/multithreading-in-java-i-want-both-ui-and-code-to-execute-in-parallel/16272933#16272933)为例子 – MadProgrammer

+0

我对索里roippi那个,但是代码太多了,这就是我没有放弃的原因。 – user1386101

回答

1

每次读取一个字节时,向计数器中加1。提供一种方法来返回总字节数和读取的字节数。在GUI代码中,将进度条的最大值设置为字节数,然后启动一个定时器,该定时器用读取的当前字节数周期性地调用progress.setValue

+0

的然后确定发生在自己的线程中的上传,和您的UI更新发生在美国东部时间 - 或者只是使用的SwingWorker代替 – MadProgrammer

+0

@ejp胖手指,iPad和自动更正:P – MadProgrammer

+0

是的,我用这个解决方案,它工作正常,非常感谢 – user1386101

相关问题