Bom, estou desenvolvendo um projeto na faculdade e em determinado momento eu carrego em um banco de dados dados armazenados em um arquivo.
Eu tentei desenvolver uma interface gráfica para o programa ficar mais intuitivo, e foi aí que surgiu meu problema.
Aqui vai uma imagem de como fica minha janela:

Dentro do código da janela (criada pelo assistente de janela do Netbeans), eu crio uma instância da classe DBUploader (a responsável pela conexão com o banco, carregamento dos arquivos e tudo mais).
Eu criei um evento para quando eu clicar no botão Upload o programa começar a carregar os dados no banco de dados. Enquanto o programa carrega os dados, eu queria que a minha ProgressBar ficasse no modo indeterminado.
Eu tentei fazer assim:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Cursor cursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
this.setCursor(cursor);
jProgressBar1.setIndeterminate(true);
String versionNumber = null;
String console = null;
boolean eraseDB = false;
if (!jTextField1.getText().isEmpty()) {
try {
versionNumber = jTextField1.getText();
if (jRadioButton1.isSelected()) {
eraseDB = true;
} else {
eraseDB = false;
}
DBUploader up = new DBUploader(versionNumber, eraseDB);
console = up.loadRdf(up.getTargetFile(), up.getEBayVersionName(), eraseDB);
jTextArea1.setText(console);
console += up.loadRdf(up.getSourceFile(), up.getSourceVersionName(), false);
jTextArea1.setText(console);
console += up.loadMatchingReferences(up.getMatchingFile(), true);
jTextArea1.setText(console);
console += "--------------------------------------------------\n" +
"Pronto!\n" + "--------------------------------------------------\n";
jTextArea1.setText(console);
cursor = Cursor.getDefaultCursor();
this.setCursor(cursor);
jProgressBar1.setIndeterminate(false);
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Erro de Execução!");
System.exit(0);
}
} else {
JOptionPane.showMessageDialog(this, "Erro de Execução!");
System.exit(0);
}
}
Mas quando eu clico no botão Upload, a minha janela fica “congelada” enquanto o programa carrega os dados. Eu até consegui colocar para o cursor do mouse ficar como ampulheta, mas só isso. A minha janela fica "congelada’ até o fim da execução dos métodos do DBUploader.
Gostaria de saber se é possível fazer o que eu quero e qual é a melhor forma para isso. Pesquisando um pouco ouvi falar sobre threads e gostaria de saber se realmente é o único jeito. Se for eu aproveito pra estudar threads.
Desculpem se eu estou postando no lugar errado, mas não encontrei nenhum post sobre esse assunto, e acho que é uma dúvida muito específica! Obrigado desde já pela atenção!