El programa Java Swing no se cierra después de que se invoque la opción Eliminar

Prefacio: Este es el primer programa de swing real que he hecho.

Tengo un programa swing, donde se supone que un JButton sale del programa. Ese botón activa this.dispose () ;. Cuando hago clic en este JButton, sehace hacer que la ventana desaparezca por completo, pero mirando el depurador, el programa en sí mismo aún se está ejecutando.

Mi método principal solo consiste en:

public static void main (String[] args)
{
  java.awt.EventQueue.invokeLater(new Runnable()
  {
    public void run()
    {
      new StartupGui().setVisible(true);
    }
  });
}

Mi botón de salida se parece al botón de acción:

private void exitButtonActionPerformed(java.awt.event.ActionEvent evt)
{
  this.dispose();
}

También he intentado esto para el botón de salida:

private void exitButtonActionPerformed(java.awt.event.ActionEvent evt)
{
  java.awt.EventQueue.invokeLater(new Runnable()
  {
    public void run()
    {
      dispose();
    }
  });
}

Al mirar el depurador después de presionar el botón de salida, veo lo siguiente (y solo lo siguiente):

Daemon Thread [AWT-XAWT] (running)
Thread [AWT-Shutdown] (running)
Thread [AWT-EventQueue-0] (running)
Thread [DestroyJavaVM] (running)

¿Alguien puede señalarme en la dirección correcta por qué el programa no se cierra después de este punto? He buscado en Google, pero hasta ahora no he llegado a ningún lado. Si necesita más información, solo avíseme

Gracias :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta