Mostrar MessageDialog enquanto acesso o banco

Olá pessoal, desculpe se estou postando no lugar errado.
Estou desenvolvendo um programa que importa uma base relacional para um SGBD, na verdade o programa está funcionando bem, estou tendo dificuldade com as telas.

Eu tenho o médodo arquivo() que usa a função FileImputStream e lê a base .TXT

while( (line = reader.readLine()) != null) { 
				
				local = line.substring(0,3);
				ds.setLocal(local);
				grupo =  line.substring(3,5);
				ds.setGrupo(grupo);
				vencimento =  line.substring(5,7);
				ds.setVencimento(vencimento);
				roteiro =  line.substring(10,15);
				ds.setRoteiro(roteiro);
				matricula =  line.substring(83,91);
				ds.setMatricula(matricula);
				an1 =  line.substring(44,46);
				ds.setAn1(an1);
				an2 =  line.substring(46,48);
				ds.setAn2(an2);
				dia =  line.substring(91,93);
				ds.setDia(dia);
				mes =  line.substring(93,95);
				ds.setMes(mes);
				ano =  line.substring(95,99);
				ds.setAno(ano);
				controleDescarga.salvar(ds);			

				conta=conta-1;
			}

Contudo, essa base relacional tem cerca de 6.000 tuplas, portanto, eu quero que uma mensagem seja exibida enquanto esse processo acontece.

]JOptionPane.showMessageDialog(null, 
						 "Importando " + conta + " registros. Aguarde um momento por favor!",
						 "Importando", JOptionPane.INFORMATION_MESSAGE);

Entretanto se eu colocar essa mensagem dentro do meu laço de repetição, o programa espera a confirmação antes da próxima linha.
Gostaria de deixar a mensagem sobreposta ao programa e impossível de remove-la e que quando o processo terminasse o usuário pudesse clicar “OK” e continuar usando o programa.

Desde já agradeço a atenção de todos.

Abraços.

Você pode executar Threads. Tem material pra caramba sobre isso na Internet, aqui no GUJ mesmo tem um artigo.
Dá uma lida e qualquer coisa retorna.

Abraço!

Obrigado por responder Gilmar.

Na realidade eu havia imaginado o uso de threads e depois que postei achei muita coisa bacana mesmo, porém não achei 2 coisas:

Como deixar o botão “OK” do MessageDialog “nulo” até que o contador chegue a zero?

Desde já obrigado.

Cara, eu acho que não existe método para deixar o botão do MessageDialog nulo não. Mas você pode criar sua própria JackerMessageDialog criando uma classe que herda JDialog e colocar um botão nela. Aí você cria um método para habilitar o botão e só chama ele quando a Thread estiver no momento exato.

Abraço! Bons códigos :slight_smile: !

Blz, vou executar uns testes e posto aqui o resultado.

Valeu a força.

kara
eu utilizei um dialog e antes de seta-lo como visible eu chamo a tread q executa o processo
dai no metodo da tread quando o processo acaba eu fecho o dialog é bem simples
qualquer coisa me manda um email
que te passo um exemplo bem certinho
só um portugol heheh pra tentar explicar hiuahsdiuha :


classe JDialog{

init jDialog(){

tread.start // aqui vc inicia a thread
setvisible(true) // dai o dialog fica aberto e a tread continua rodando

}


Tread(){

metodo run(){

// aqui chama teu procedimento
migra()

// dai aqui fecha o dialog
get_Dialog.dispose;

}


}


public JDialog get_Dialog(){
 
  return this;
}

}