[RESOLVIDO] Chamar metodo ao final da Thread

5 respostas
michetti

Estou tentando chamar um metodo assim que acabar a execução da thread, porém nada acontece..

Segue meu código..

public Splash() {
        initComponents();
        new Thread(){
          public void run(){
              Conexao cx = new Conexao();
              for(int i=0; i<101;i++){
                  if(i == 100){
                      i = 0;
                  }
                  try {
                      sleep(100);
                      jProgressBar1.setValue(i);
                      if(jProgressBar1.getValue() <= 20){
                          jLabel1.setText("Verificando dados da licença...");
                          licensa= true;
                      }else if(jProgressBar1.getValue() <= 40){
                          jLabel1.setText("Verificando conexão com banco de dados...");
                          if(cx.ok.equals("ok")){
                              jLabel1.setText("Conexão com banco de dados realizada com sucesso");
                              banco = true;
                          }else if(cx.ok.equals("no")){
                              JOptionPane.showMessageDialog(null, "Error ao conectar com o banco de dados");
                                System.exit(0);
                          }
                      }else if(jProgressBar1.getValue() <= 60){
                          jLabel1.setText("Verificando versão do sistema...");
                          versao = true;
                      }else if(jProgressBar1.getValue() <= 80){
                          jLabel1.setText("Iniciando sistema...");
                         
                      }
                      
                  } catch (InterruptedException ex) {
                      return;
                  }
             }
               princiapl();
          }
        }.start();
        
    }

Tentei colocar o meu metódo em tudo quanto é lugar e nenhum funcionou.. alguém pode me ajudar? :>D

5 Respostas

asousaj

Esse seu código faz com que o “for” dentro no método run fique em loop.

if(i == 100){
    i = 0;
}

Só vai sair do loop quando houver uma InterruptedException como colocou o return dentro do catch não vai chegar até onde invoca o método “principal”(que está escrito errado no código :D).

Analisa o que eu escrevi, altere onde necessário, se persistir duvidas poste aqui.

michetti

Sim eu fiz isso para fazer tipo um efeito da barra de progresso carregando “sem fim” ai a barrinha fica passando entendeu? rsrsrs
Existe outro método de fazer isso que falei sem deixar em loop?

Vou tirar o loop so para testar o que você disse.

@edit

Deu tudo certo retirando o loop… se você souber como posso deixar a barra de progresso passando “infinitamente” :stuck_out_tongue:

asousaj

Ainda não entendi a necessidade de um ProgressBar infinito, afinal em algum momento o progresso deve chegar ao fim. :S

michetti

É porque tipo… onde trabalho revendemos um sistema de automação industrial, e quando abre este sistema tem uma progress bar “infinita” enquanto verifica conexão com banco de dados, verifica licença, versão do banco de dados, etc…
Achei super bacana o efeitinho da progrress bar indo e voltando rsrsrs

asousaj

michetti:
É porque tipo… onde trabalho revendemos um sistema de automação industrial, e quando abre este sistema tem uma progress bar “infinita” enquanto verifica conexão com banco de dados, verifica licença, versão do banco de dados, etc…
Achei super bacana o efeitinho da progrress bar indo e voltando rsrsrs

Agora entendi “infinita” nesta etapa apenas.
Logo aparece alguém que manja de swing pra te ajudar. Certamente ter de alterar tua lógica.

Criado 14 de novembro de 2013
Ultima resposta 16 de nov. de 2013
Respostas 5
Participantes 2