Em uma janela quando o usuário clicar em um botão irá executar um determinado método.
Só que antes de executar este método quero abrir um JDialog que conterá um texto de aguarde. Ao acabar o método fecho a janela.
Ou seja quero que execute este método e ao mesmo tempo execute o JDialog. Daí pensei Thread.
Fiz da seguinte forma: criei uma classe Thread que abre o JDialog. Antes de executar o método eu starto a Thread e após o método eu do um interrupt na Thread.
Só que não esta funcionando, quando executo a Thread abre o JDialog porem some tudo de dentro. Mas se eu executar separadamente ta tudo ok. Alguem pode me ajudar?
TesteThread tt = new TesteThread(this);// Fiz também sem associar um Frame no outro e tb não funcionou, ou seja, sem esse this.
tt.start();
meuMetodo();
tt.interrupt();
E ai alguem pode me ajudar?
R
redr4gon
usar interrupt em thread não é aconselhavel e deve ser evitado
use uma sinalização ao invés disso
faça o seguinte: crie o thread e uma variável que irá dizer se ele finaliza ou não.. e no método principal, ao acabar seu método vc da um stop na thread... algo assim:
publicclassTesteThreadextendsThread{privatebooleanstop=true;publicTesteThread(Frameframe){a=newAguarda(frame,true);}@Overridepublicvoidrun(){a.setVisible(true);while(!stop){sleep(300);}}publicvoidstop(){stop=true;}}// e no principal...tt.start();meuMetodo();tt.stop();
F
forever_juba
Não funcionou do mesmo jeito.
E acho que não esta sendo executado os o processo da janela principal, apesar de startar uma Thread.
Alguem pode me ajudar?
R
redr4gon
que tal escrever algo mais elaborado?
vc não precisa passar o frame para a thread, vc pode criar um frame dentro dela mesmo
ta em outra classe? então da um new na jdialog
simples
tem um exemplo de thread aqui.. siga esse conceito.. lembre-se que ao invés de usar interrupt, deixe a thread terminar por conta própria, nunca use interrupt na vida