jProgressBar Netbeans

1 resposta
A

Estou fazendo um código que mostre os números aleatórios em uma jTextArea. Quero que a barra de progresso vá enchendo, e não que ela faça tudo de uma vez só. Se observarem abaixo, o código coloca 50.000 números aleatórios no jTextArea1.

if (jComboBox2.getSelectedItem().toString().equals("50000")) { int numeroTmp = 0; for (int i = 0; i < 50000; i++) { numeroTmp = radom.nextInt(50000); jProgressBar1.setValue(i); jTextArea1.insert ("" + numeroTmp, jTextArea1.getCaretPosition()); jTextArea1.append ("\n"); } }
Executando esse código ele gera os números randômicos e de repente ele dá uma “travadinha” de uns 2 segundos. Depois disso, ele coloca os números no TextArea e a barra passa instantaneamente para os 100%.

Agradeço se me ajudarem!

1 Resposta

michetti

O melhor jeito de se fazer isso é usando Threads... vou te mostrar um exemplo que uso.

new Thread() {
            public void run() {
                Conexao cx = new Conexao();
                for (int i = 0; i < 101; i++) {
//                  if(i == 100){
//                      i = 0;
//                  }
                    try {
                        sleep(60);
                        jProgressBar1.setValue(i);
                        if (jProgressBar1.getValue() <= 50) {
                            jLabel1.setText("Verificando dados da licença...");
                            licensa = true;
                        } else if (jProgressBar1.getValue() <= 70) {
                            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() <= 80) {
                            jLabel1.setText("Verificando versão do sistema...");
                            versao = true;
                        } else if (jProgressBar1.getValue() <= 100) {
                            jLabel1.setText("Iniciando sistema...");

                        }

                    } catch (InterruptedException ex) {
                    }
                }
                principal(); // aqui chama o metodo ou ação quando terminar o for;
            }
        }.start();

    }
Criado 28 de fevereiro de 2014
Ultima resposta 28 de fev. de 2014
Respostas 1
Participantes 2