2013-07-19 123 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

相關問題