Fechar pai fechar todos os filhos que já tiverem abertos

Eu estou tentando usar no método de saída do pai fechar os filhos assim porem eles ainda continuam abertos.
crio :

private FrameBuscaTurno frameBuscaTurno;
private FrameBuscaClasFuncao frameBuscaClasFuncao;

instanciar:

frameBuscaTurno = new FrameBuscaTurno(this);
frameBuscaClasFuncao = new FrameBuscaClasFuncao(this);

tento fechar a sim:

this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                frameBuscaTurno.dispose();   
                frameBuscaClasFuncao.dispose();
                FramePrincipal frameMain = new FramePrincipal();  
                dispose(); 
                frameMain.setVisible(true);
                setVisible(false);

            }
        });

Se o objetivo é só fechar tudo, pode usar o bom e velho

System.exit(0);

então meu caro @darlan_machado não seria eu teria que voltar para frame principal

Será que você está criando várias instâncias das outras janelas e está fechando as erradas?
Posta os códigos completos das classes envolvidas.

então @staroski eu abria a tela principal e depois vou para pai e fecho a principal ficando somente a pai dai dentro da pai eu abro a filha que fica as duas juntos se eu fecho a filha volta para pai normal mais se eu clico na pai e depois fecho ela não fechava a filha. eu corrigi isso fechando o pai quando abro a filha por que ai eu não posso voltar para a pai sem fechar a filha.

@staroski outra duvida como nesse tópico eu simplesmente mudei o conceito deixando somente 1 aberta por vez ninguém tinha me ajudado. eu devo colocar resolvido ou algo