有netbeans6.5开发一桌面程序,有个部分是程序FTP到其他服务器上下载文件,要求下载一个,进度栏显示一个新的进度,偶代码如下:
String[] files;int i=0,j=0;FTPClient client ;
client=new FTPClient();
        try {
            client.setRemoteHost(HostIp);
            client.connect();
            client.login(strUser, strPasswd);
            client.setType(FTPTransferType.BINARY);
            client.chdir(strRemtPath);
            files=client.dir();
            jProgressBar1.setValue(0);
            jProgressBar1.setMaximum((int)files.length-2);
            jProgressBar1.setVisible(true);

            while(i<files.length){
                if(files[i].charAt(0)!='.'){
                    client.get(strLocPath+"\\"+files[i],files[i]);j++;jProgressBar1.setValue(j);
                   // jProgressBar1.invalidate();jProgressBar1.validate();
                   //jProgressBar1.updateUI();
                   // this.invalidate();this.validate();
                   //JOptionPane.showMessageDialog(this,"已成功从服务器上下载"+j+"个文件!", "文件下载结果", JOptionPane.INFORMATION_MESSAGE);
                    System.out.println(j+"\t"+files[i]+"\t");
                }
                i++;
            }
 
本来想让程序没下一个文件,进度栏前进一步,但实际是在下载过程中,整个窗口画面都是死的,进度栏指示为0,窗口画面不会刷新,而等待下载完了才突然显示进度栏到了100.
偶尝试用jProgressBar1.invalidate();jProgressBar1.validate();以及对整个窗口this.invalidate();this.validate();都无法实现想要的结果。如果每下一个文件就用JOptionPane.showMessageDialog(this,"已成功从服务器上下载"+j+"个文件!", "文件下载结果", JOptionPane.INFORMATION_MESSAGE)显示一个提示,可以达到进度栏实时更新,但这样太麻烦,尤其文件太多的情况下,对用户不友好
请问这个问题怎么解决啊

解决方案 »

  1.   

    请学会搜索
    http://topic.csdn.net/u/20080522/23/99c624bc-1aa6-441b-abc2-d478f9426601.html 
      

  2.   

    你没看清偶的问题啊
    问题不是怎么使用jProgressBar,而是,或者说应该问:在程序进行FTP下载文件时,主程序窗口上的各控怎么不重新绘,
      

  3.   

    jProgressBar1 是否是模式对话框~,如果是JDialog的话 那么你setVisible的时候就已经使当前线程阻塞了 在之前启动线程 对该progressbar操作如果是单纯的在页面上显示的话 那么可以直接用setvalue(bar.getvalue+1)使进度条前进
      

  4.   

    你好像说的有点接近了
    jProgressBar1是在jFrame窗口上的一个进度栏(本程序是桌面应用程序),如何修改偶上面的代码呢
      

  5.   

    TMD,java超级垃圾,一点都没VC好!