jProgressBar Netbeans

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!

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

[code] 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();

}[/code]