JProgress Bar nao aparece

bom pessoal sou novo por aqui e estou gostando muito do forum.

trabalho a um ano com desenvolvimento em vb.net e estou começando agora em java. estou desenvolvendo um sistema de backup para empresa onde trabalho porem estou com um problema na hora de copiar os arquivos.

Criei uma classe com um jframe quem contem dois jprogress bar: um que mostrará o progresso do arquivo atual e outro que mostrara o progresso total do backup.

tenho, em outra classe um metodo responsavel por capactar e salvar os arquivos do backup e é neste metodo que que chamo o jframe de progresso e durante o metodo vou passando os valores das barras atraves dos metodos set values que criei para cada um.

meu problema é que quando o processo começa a janela de progresso abre mas as progress bar ficam invisives e só aparecem depois que o processo de backup termina.

andei lendo varios topicos aqui do forum e varios falam sobre threads. nao estou usando threads. sera por causa disso?
outra coisa. estou usando a ide do netbeans. entao toda a parte de inteface grafica eu “desenhei” hehe…

se alguem puder me ajudar…

o progresso ou o

jProgress bar?

pq se for o Jprogress é setvisible e quando a barra de progresso… tava com duvidada quanto a isso a uns dias atras e achei um codigo assim

[code] public class Runner extends Thread
{
public void run()
{
try
{
startDownload();
}

           catch ( Exception e )
           {
               System.out.println( "ERRO: " + e.toString() );
           }
       }
   }[/code]

[code] private void startDownload()
{

       try
       {
           progress.setValue( 0 );

// poe o que vc quiser e chama o metodo que vc quer

}
}

       catch ( Exception e )
       {
           e.printStackTrace();
       }
   }

[/code]

depois finalmente

[code]private void downloadFile( File target ) throws Exception
{
int contentLength = conn.getContentLength();

      progress.setMinimum( 0 );
      progress.setMaximum( contentLength );
      progress.setValue( 0 );

// bla bla bla

progress.setValue( bytesRead ); // aki vc seta o valor de acordo com o progresso do backup

/e acabou aki funciona beleza

}

[/code]

o que nao esta aparecendo é o jprogress bar mesmo. nao sei o que acontece. pelo que estava vendo é como se a janela que contem os jprogress só carregasse após terminar o processo de compactação. o processo que estou fazendo é bem parecido com este que voce passou porem a classe que tem o metodo de compactação nao é a mesmo que possui os jprogress.

será que pode ser por causa disso? tipo, quando uma classe esta executando um metodo a outra fica estatica. e no meu enquanto estou compactando a tela nao fica visivel por inteiro?

não intendi direito não mais vc ta se certificando que ta +/-

progress.setVisible(true);

?

sim, ja me certifiquei sim… estou utilizando o setvisible(true)… ja tentei colocar o setvisible nos jprogres tambem… tipo : jprogres.setvisible(true) mas nao adianta… é como se o jframe só carregasse por completo depois que o metodo terminasse de compactar os arquivos. mas esta tudo ok… debuguei o codigo linha a linha para me certificar se estava passando os values corretos e esta tudo certo. a unica coisa é que enquanto o metodo esta sendo processado os jprogress nao aparecem…

desculpe pela demora em responder… mas é que a semana começou e a correria rotineiro do trabalho tambem.

depois de muito apanhar e ficar horas a fio pesquisasndo na net me encarnei no exemplo que o 001gruder001 enviou… no começo estava meio recioso em utilizar threadas pois nao sabia muito bem como que funcionava… ma após dar uma pesquisa vi que era isso mesmo que eu estava precisando… vou postar o codigo de como ficou o meu metodo aqui funcionando… só nao reparem se estiver meio bagunçado… mexi tanto no codigo para ver ele funcionando e apresentar na minha firma esta segundo feira que deu uma bagunçada…mas vou ajeitar antes de entregar o trabalho final… assim que chegar em casa vou postar o fonte:

bom ta aih o codigo final como que final o meu metodo funcionando blz:

public void GeraBackupZip(){

        Thread t = new Thread( new Runnable() {
            public void run() {
                String files[];
                files = Funcoes.getConfig(3).split("&");
                String baseDados = Funcoes.getConfig(0);                
                Date data = new Date();
                //Reserva espaço necessário em memória
                byte[] buffer = new byte[18024];
                //Nome do Arquivo Zipado
                String zipFileName ;
                if (Funcoes.getConfig(2).equals("0")){
                    zipFileName = Funcoes.getConfig(1) + "\backup.zip";
                }else{
                    zipFileName = Funcoes.getConfig(1) + "\backup" + formatData.format(data).replace("/", "_") + ".zip";
                }
                try {
                    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
                    out.setLevel(Deflater.DEFAULT_COMPRESSION);
                    //Verifica se o numero de Arquivos é maior que zero
                    if (files.length > 0 ){
                        //Inicia os valores iniciais do formulario de progresso
                        setVisible(true);
                        setValueTotalMin(0);
                        setValueTotalMax(files.length);
                        setValueTotal(0);
                        setValueAtuallMin(0);
                        setValueAtual(0);
                        //percorre a lista de arquivos campactando
                        for (int i = 0; i < files.length;i++){
                            if (i == 0){//Se for o primeiro arquivo, campacta a base de dados
                                FileInputStream inBase = new FileInputStream(baseDados);
                                //referencia para o total de bytes do arquivo
                                FileInputStream inBaseTot = new FileInputStream(baseDados);
                                //extrai do diretorio somente o nome do arquivo
                                out.putNextEntry(new ZipEntry(baseDados.substring(baseDados.lastIndexOf("\")+1)));
                                int len;
                                //Calcula o total de bytes do arquivo
                                int a = 0;
                                while ((len = inBaseTot.read(buffer))>0){
                                    a += 1;
                                }
                                inBaseTot.close();
                                setValueAtualMax(a);
                                setValueAtual(0);
                                //Escreve o arquivo e acrescenta o progresso
                                len = 0;
                                a =0;
                                while ((len = inBase.read(buffer))>0){
                                    a +=1 ;                                    
                                    setValueAtual(a);
                                    Thread.sleep(1);
                                    out.write(buffer, 0, len);
                                }
                                out.closeEntry();
                                inBase.close();
                            }
                            FileInputStream in = new FileInputStream(files[i]);
                            FileInputStream inArqTot = new FileInputStream(files[i]);
                            out.putNextEntry(new ZipEntry(files[i].substring(files[i].lastIndexOf("\")+1)));
                            int len;
                            //Calcula o total de bytes do arquivo
                                int a = 0;
                                while ((len = inArqTot.read(buffer))>0){
                                    a += 1;
                                }
                                inArqTot.close();
                                setValueAtualMax(a);
                                setValueAtual(0);
                                //extrai do diretorio somente o nome do arquivo
                                setNomeArquivo(files[i].substring(files[i].lastIndexOf("\")+1));                        //Escreve o arquivo e acrescenta o progresso
                                len = 0;
                                a = 0;
                            while ((len = in.read(buffer))>0){
                                a +=1;
                                setValueAtual(a);
                                Thread.sleep(1);
                                //frmProgresso.setValueAtual(len);
                                out.write(buffer, 0, len);
                            }
                            out.closeEntry();
                            in.close();
                            setValueTotal(i+1);
                            Thread.sleep(1);
                        }                        
                        JOptionPane.showMessageDialog(null, "Backup Realizado com Sucesso!","Backup NS",JOptionPane.INFORMATION_MESSAGE);                        
                    }
                    out.close();
                    exit();
                }catch (IllegalArgumentException iae){
                    iae.printStackTrace();
                }catch (FileNotFoundException fnfe){
                    fnfe.printStackTrace();
                }catch (IOException ioe){
                    ioe.printStackTrace();
                }catch (Exception e){
                    System.out.println("teste");
                }
            }
        });
        t.start();