Erro em barra de progresso

4 respostas
leandrogbraga

Estou estudando e tentando implementar uma barra de progresso (conforme eu consegui assimilar pelo que li) e não estou conseguindo ver onde estou errando. Quem puder me ajudar agradeço.

package zipnew;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.swing.JOptionPane;

public class Zipar{

    public static void zipa(Date d) {

       
        
       String dir = ("d:\Cam");
       File file;
       File arquivos [];
       file = new File(dir);
       File afile [] = file.listFiles();
       arquivos = new File [afile.length];
       int count = 0;
       int i = 0;
       Date fileDate = null;
       
       
       //Data do Sistema
       Calendar cal = Calendar.getInstance();
       cal.set (Calendar.HOUR,0);
       cal.set (Calendar.MINUTE,0);
       cal.set (Calendar.SECOND,0);
       cal.set (Calendar.MILLISECOND,0);
       Date sysDate = cal.getTime();
       sysDate.setHours(0);



                //verifica se a data escolhida e a data corrente
                if(d.compareTo(sysDate)==0){
                 JOptionPane.showMessageDialog(null,"Não é possivel zipar arquivos do dia corrente!!!");
                   return;

                }else{

                //verifica se a data escolhida e um dia futuro
                if(d.after(sysDate)){
                 JOptionPane.showMessageDialog(null,"Escolha uma data valida!!!");
                 return;

                }else{

                 for (int j = afile.length ; i<j; i++){

                  //verifica se existem arquivos na data escolhida e carrega o vetor
                    fileDate= new Date(afile[i].lastModified());
                    Calendar calFile = Calendar.getInstance();
                    calFile.setTime(fileDate);
                    calFile.set (Calendar.HOUR, 0);
                    calFile.set (Calendar.MINUTE, 0);
                    calFile.set (Calendar.SECOND, 0);
                    calFile.set (Calendar.MILLISECOND, 0);
                    fileDate = calFile.getTime();
                    fileDate.setHours(0);


                    
                    if(d.compareTo(fileDate)==0){
                    arquivos[count] = afile[i];
                    count = count+1;

                     }
                }
                  MinhaThread t = new MinhaThread(count);
                  // t.start();

                   //verifica se o vetor esta vazio
                    if (arquivos==null){
                        JOptionPane.showMessageDialog(null,"Não existe arquivo nesta data para compactar!!!");
                        return;

                 }else{

                  

        byte[] buf = new byte[1024];

try {

    String outFilename = "d:\backup\Backup.zip";
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));


          i = 0;
          for (int j=count; i<j ; i++){

              t.start();
                          
              FileInputStream in = new FileInputStream(arquivos[i]);
              out.putNextEntry(new ZipEntry(arquivos[i].getName()));
     
            int len;
            while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
            }

        out.closeEntry();
        in.close();
        
        
        }

        out.close();
        JOptionPane.showMessageDialog(null,"Concluido!!!");
        }

        catch (IOException e) {
        }

                  
      }
     }
    }
   }
  }
package zipnew;

import javax.swing.JProgressBar;

public class MinhaThread extends Thread  {
    
  // área de dados da Thread
    private int contador;
    private int limite;
    JProgressBar jp;

    // inicializador da MinhaThread

    public MinhaThread( int limite ) {
        this.limite = limite;
        this.contador = 0;

    }
     

    // área de código da Thread
    public void run() {
            jp.setMaximum(limite);

            while (contador <= limite) {
        
            jp.setValue(contador);
           

            try {

                Thread.sleep( 1000 ); // coloca a "thread" para "dormir" 1 segundo

            } catch (InterruptedException e) {

                e.printStackTrace( System.err );

            }
        }
    }
}

4 Respostas

S

Qual é o erro amigo? :wink:

leandrogbraga

da esse erro: Exception in thread “Thread-3” java.lang.NullPointerException

S

Não é porque você está usando esse objeto jp sem instanciá-lo?

leandrogbraga

Refiz a classe e parei aqui… estou errando apenas na posição do jp.setValue ou estou fazendo alguma outra besteira??? quem puder ajudar agradeço…

package zipnew;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.swing.*;

public class Zip implements Runnable {
    
       JProgressBar jp;
       javax.swing.Timer busyIconTimer;
       Date d;
    
     public Zip(javax.swing.Timer busyIconTimer,JProgressBar jp,Date d){

        this.busyIconTimer=busyIconTimer;
        this.jp=jp;
        this.d=d;
     }


     public void run(){
      try {
      String dir = ("d:\Cam");
      File file;
      File arquivos [];
      file = new File(dir);
      File afile [] = file.listFiles();
      arquivos = new File [afile.length];
      int count = 0;
      int i = 0;
      Date fileDate = null;


       //Data do Sistema
       Calendar cal = Calendar.getInstance();
       cal.set (Calendar.HOUR,0);
       cal.set (Calendar.MINUTE,0);
       cal.set (Calendar.SECOND,0);
       cal.set (Calendar.MILLISECOND,0);
       Date sysDate = cal.getTime();
       sysDate.setHours(0);

                //verifica se a data escolhida e a data corrente
                if(d.compareTo(sysDate)==0){
                 JOptionPane.showMessageDialog(null,"Não é possivel zipar arquivos do dia corrente!!!");
                   return;

                }else{

                //verifica se a data escolhida e um dia futuro
                if(d.after(sysDate)){
                 JOptionPane.showMessageDialog(null,"Escolha uma data valida!!!");
                 return;

                }else{

                 for (int j = afile.length ; i<j; i++){
                 // jp.setValue(i);

                  //verifica se existem arquivos na data escolhida e carrega o vetor
                    fileDate= new Date(afile[i].lastModified());
                    Calendar calFile = Calendar.getInstance();
                    calFile.setTime(fileDate);
                    calFile.set (Calendar.HOUR, 0);
                    calFile.set (Calendar.MINUTE, 0);
                    calFile.set (Calendar.SECOND, 0);
                    calFile.set (Calendar.MILLISECOND, 0);
                    fileDate = calFile.getTime();
                    fileDate.setHours(0);

                    if(d.compareTo(fileDate)==0){
                    arquivos[count] = afile[i];
                    count = count+1;

                     }

                     jp.setVisible(true);
                     jp.setMaximum(count);
                     jp.setValue(0);
                     busyIconTimer.start();

                }
                 
                   //verifica se o vetor esta vazio
                    if (arquivos==null){
                        JOptionPane.showMessageDialog(null,"Não existe arquivo nesta data para compactar!!!");
                        return;

                 }else{



        byte[] buf = new byte[1024];



    String outFilename = "d:\backup\Backup.zip";
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));

          i = 0;
          for (int j=count; i<j ; i++){
             
              FileInputStream in = new FileInputStream(arquivos[i]);
              out.putNextEntry(new ZipEntry(arquivos[i].getName()));

            int len;
            while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
            }

        out.closeEntry();
        in.close();

        }

        out.close();
        jp.setValue(i);
        jp.setVisible(false);
        busyIconTimer.stop();
        JOptionPane.showMessageDialog(null,"Concluido!!!");
        }

       }
      }
     }catch (IOException e) {
    }
   }
  }
Criado 23 de agosto de 2010
Ultima resposta 24 de ago. de 2010
Respostas 4
Participantes 2