O diálogo Java não descarta

Java noob aqui. Minha classe Swing que se estendeJDialog não descarta quando o usuário pressiona o botão Fechar do Windows - o java.exe permanece na memória. Eu reduzi o código até esse shell, ainda recebo esse comportamento.

Dei uma olhada em outras amostras, como emJava Swing básico, como sair e descartar seu aplicativo / JFrame
Quando eu comentei os doisSystem.exit(0) linhas nesse código de exemplo, a classe nesse exemplo ainda é descartada corretamente. O que estou faltando para fazer minha classe se desfazer?

import javax.swing.JFrame;
import javax.swing.JDialog;
public class WhyNoDispose extends JDialog{
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    WhyNoDispose frame = new WhyNoDispose("my title");
                    frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                    frame.setVisible(true);
                    //System.exit(0);
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    public WhyNoDispose(String title) {
        super(new JFrame(title), ModalityType.APPLICATION_MODAL);
        pack();
    }
}

questionAnswers(1)

yourAnswerToTheQuestion