Parar o funcionamento do programa enquanto não for fechada a JDialog

Meu programa tem uma janela principal e em um certo momento abre uma JDialog. Só que a janela de trás que deveria aparecer somente depois de fechada a JDialog está aparecendo na sequencia. Como eu faço para que o programa fique em “dormindo” enquanto a dialog não é fechada?

Abra o JDialog como modal!

Só um detalhe: se você estiver usando Threads, isso vai parar somente a Thread em que a janela está sendo aberta. O resto continua rodando.

você pode setar o frame principal quando vc chama o jDialog, usando
setVisible(false); para o frame desaparecer
setEnabled(false); para que o usuário veja o frame, mas não consiga manipulá-lo com o mouse