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?
Tem o JDialog, criado usando o netbeans, não coloquei o codigo pois o netbeans gera um bocado de coisa.
A classe Thread:
public class TesteThread extends Thread{
private Aguarda a;
public TesteThread(Frame frame){
a = new Aguarda(frame,true);
}
@Override
public void run() {
a.setVisible(true);
}
@Override
public void interrupt() {
super.interrupt();
a.dispose();
}
Na janela principal faço assim:
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();
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:
[code]public class TesteThread extends Thread{
private boolean stop = true;
public TesteThread(Frame frame){
a = new Aguarda(frame,true);
}
@Override
public void run() {
a.setVisible(true);
while ( !stop) {
sleep(300);
}
}
public void stop() {
stop = true;
}
}
// e no principal…
tt.start();
meuMetodo();
tt.stop();
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