Duas janelas concorrentes

Ola pessoal, estou querendo fazer o seguinte:

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?

Poste aqui como você está fazendo.

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();

E ai alguem pode me ajudar?

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();

[/code]

Não funcionou do mesmo jeito. :frowning:
E acho que não esta sendo executado os o processo da janela principal, apesar de startar uma Thread.

Alguem pode me ajudar?

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

[code]public class MultiThread {

public static void main( String [] args ) {

TesteThread t1 = new TesteThread(  );  
TesteThread t2 = new TesteThread(  );  
TesteThread t3 = new TesteThread(  );  

t1.setName( "Thread 1: " );  
t2.setName( "Thread 2: " );  
t3.setName( "Thread 3: " );  

t1.setSlp( 100 );  
t2.setSlp( 150 );  
t3.setSlp( 50 );  

t1.start();  
t2.start();  
t3.start();  

}

}

class TesteThread extends Thread {
static int i;
int slp;

public void setSlp( int slp ) {
this.slp = slp;
}

public void run() {

try {  

  for ( int z = 0; z < 10; z++ ) {  
    this.sleep( slp );  
    System.out.println( getName() + z );  
  }  

} catch( InterruptedException e ) {  

  e.printStackTrace();  

}  

}
} [/code]