2014-11-04 19 views
1

我正在編寫一個程序,使用SFTP從服務器下載文件。我想在程序上有一個反映下載進度的進度條。這是我對目前的進度監視器代碼:如何在SftpProgressMonitor實例中使用現有的JProgressBar?

public class SystemOutProgressMonitor implements SftpProgressMonitor 
{ 
    public SystemOutProgressMonitor() {;} 

    public void init(int op, java.lang.String src, java.lang.String dest, long max) 
    { 
     System.out.println("STARTING: "+op+" "+src+" -> "+dest+" total: "+max); 
    } 

    public boolean count(long bytes) 
    { 
     for(int x=0;x<bytes;x++) { 
      System.out.println("#"); 
     } 
     return(true); 
    } 

    public void end() 
    { 
     System.out.println("\nFINISHED!"); 
    } 
} 

也能正常工作,輸出到控制檯,但是,我不知道如何對現有的進度條變量傳遞到這一點。

,我使用駐留在我的Menu.java類的JProgressBar,在這個類中有一個下載按鈕調用我Sftp.java類相應的下載方法,從那裏,SystemOutProgressMonitor被稱爲:

sftpChannel.get(target, destination, new SystemOutProgressMonitor()); 

所以我會將Menu.java的進度條傳遞給Sftp.java,然後傳遞給SystemOutProgressMonitor?

回答

0

看看ProgressMonitor

否則,你就需要一個SwingWorker或使用SwingUtilities.invokeLater,以確保更新到JProgressBar同步到正確的事件調度線程。

看看:

更多細節

+0

所有我想要做的是設置在現有的價值SystemOutProgressMonitor的count方法內的進度條,可以嗎? – ReidandKat 2014-11-04 21:16:42

+0

是的,但是因爲您沒有提供任何代碼,顯示很難知道該提出什麼建議甚至是什麼問題。請參閱第二段,瞭解您需要做什麼來確保您不違反Swing的單線程規則 – MadProgrammer 2014-11-04 21:18:13

相關問題