penso sia legato alla reale distruzione del frame collegato al showmessagedialog.

ho quest'impressione xchè utilizzando il seguente codice
codice:
        int lung = JFrame.getFrames().length;
for (int ii=0; ii<lung; ii++) {
Frame frame = JFrame.getFrames()[ii];
System.out.println("INS"+frame.getName());
}
ho notato che ci sono + frame aperti del previsto

il metodo dispose sembra non funzionare perchè il frame viene sempre elencato dal precedente codice.

quindi, come si distrugge REALMENTE un jframe?