Como usar jProgressbar em classes de comparação de arrayList?

1 resposta
java
C

Tenho uma classe que compara dois ArrayList, um com informações adicionadas pelo usuário e outro com consulta do banco de dados.

Depois que a consulta é feita, mando este objeto para outra classe que realiza a escrita desses dados em um arquivo, gostaria que enquanto estas verificações fossem feitas mostrasse um jProgressbar pra o usuário não ter a impressão de que o sistema está travado.

public ArrayList<ModeloCadastroTerceiro> verificaCodigoTerceiro(ArrayList<ModeloCadastroTerceiro> modelo) {

        ConectaBanco conecta = new ConectaBanco();

      conecta.conexao();
      StringBuilder str_busca = new StringBuilder(); 

        ArrayList<ModeloCadastroTerceiro> modeloRetorno = new ArrayList<>();

        ModeloCadastroTerceiro mod;

        str_busca.append('(');
        for (ModeloCadastroTerceiro modelo1 : modelo) {
            str_busca.append("'");
            str_busca.append(modelo1.getCpfTerceiro());
            str_busca.append("'");
            str_busca.append(',');
        }
       
        str_busca.deleteCharAt((str_busca.toString().length() - 1));

        str_busca.append(')');
        
        String busca = String.valueOf(str_busca);
       
        conecta.executaSQL("select * from cadastro_terceiros where cpf_cnpj_terceiro in" + busca);

        try {
            conecta.rs.first();

            do {
                mod = new ModeloCadastroTerceiro();
                mod.setCodTerceiro(conecta.rs.getInt("id_prosoft_terceiro"));
                mod.setCpfTerceiro(conecta.rs.getString("cpf_cnpj_terceiro"));
                modeloRetorno.add(mod);
            } while (conecta.rs.next());

        } catch (SQLException ex) {
            if (ex.getErrorCode() == 0) {

            } else {
                Logger.getLogger(RecuperaInformacaoBanco.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

       ArrayList<ModeloCadastroTerceiro> fim = new ArrayList<>();
        ModeloCadastroTerceiro modFim;

        for (ModeloCadastroTerceiro mod1 : modelo) {

            boolean flag = false;//usada para marcar terceiro não encontrado

            for (ModeloCadastroTerceiro te1 : modeloRetorno) {

                if (mod1.getCpfTerceiro().equals(te1.getCpfTerceiro())) {
                    flag = true;
                }
            }

            if (flag == false) {
                modFim = new ModeloCadastroTerceiro();
                modFim.setCodTerceiro(mod1.getCodTerceiro());
                modFim.setNomeTerceiro(mod1.getNomeTerceiro());
                modFim.setCpfTerceiro(mod1.getCpfTerceiro());
                fim.add(modFim);
            }else{
                System.out.println("TERCEIRO JA CADASTRADO... NÃO SERA IMPORTADO");
            }

        }
        return fim;
    }

Depois disso eu chamo a classe que escreve no arquivo a partir de um ArrayList

public void escreverNoArquivo(File arquivo, ArrayList<String> texto) {

        FileWriter fw;
        BufferedWriter bw;

        try {

            fw = new FileWriter(arquivo);
            bw = new BufferedWriter(fw);

            // Recupera cada linha do texto e escreve no arquivo
            for (int i = 0; i < texto.size(); i++) {

                // Escreve o texto no arquivo
                bw.write(texto.get(i));
                // Quebra de linha
                bw.newLine();

            }

            bw.close();

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

    }

Será que alguém poderia me ajudar a fazer um jProgressBar que mostre o andamento disso?

Já agradeço por ter chegado ate aqui!!!
Obrigado

1 Resposta

Lucas_Camara

Veja esse link. Montei um exemplo usando jprogressbar com thread simulando (usando sleep) um processamento. Basta adaptar seu código para usar esse esquema. Veja a parte da resposta com um exemplo usando thread.

Criado 16 de maio de 2016
Ultima resposta 17 de mai. de 2016
Respostas 1
Participantes 2