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]