Como esperar conclusão de tarefa para continuar?

Ola Pessoal,

Tenho uma classe A que controla toda a aplicação, faz as devidas inicializações e em determinado momento mostra uma tela, a classe A deve esperar que o usuário preencha os dados e conecte para continuar e então exibir outra tela que usará um objeto de conexão da primeira tela.

Eu criei a tela de conexao extendendo um JFrame e qd instancio a classe B e dou um .show() a tela aparece mas a execução em A continua.

Eu fiz um while(B.isVisible()) Thread.Sleep(500) em A … mas estava imaginando se existe outro modo de esperar pra continuar.

Pensei :idea: em um evento, a classe A registra um Listener pra determinado evento e a classe B lança esse evento pra A … assim A vai saber que deve continuar … maaaaas, como fazer?
Se for esse o caminho eu agradeço por URLs e comentários sobre criação de eventos nesse estilo, pq ai eu teria muitas possibilidades.

Obrigado

saco nada de swing, mas 1 ideia é fazer o seguinte:

na thread q vai aguardar:
b.wait();

na thread do frame:

b.setVisible(false);
b.notify();