Allora: una finestra X dovrebbe essere sempre aperta nello stesso punto. Non ci dovrebbero mai essere 2 punti diversi di apertura, altrimenti l'unico modo che hai per controllare una cosa del genere è avere un "gestore delle finestre". In questo modo, il riferimento è sempre lo stesso e non hai problemi.

Se non è così, devi rivedere l'architettura: non puoi pretendere che due oggetti diversi vedano la stessa istanza di un terzo oggetto se nessuno lo fa conoscere all'altro.

Ripeto anche (e l'ho già detto nelle tue due precedenti discussioni) che l'ascoltatore universale non è una buona soluzione... e qui si cominciano a vedere i primi problemi (anche se l'ascoltatore universale lavora comunque con i riferimenti... quindi, chi ha aperto la finestra ha il riferimento e lo passa all'ascoltatore universale, quindi sa anche se deve riaprirla oppure no perchè il riferimento ce l'ha fin dall'inizio).

E, per inciso, questo codice è la causa di tutti i tuoi mali:


codice:
public void actionPerformed(ActionEvent e){
       
    new FrameAggiungiArticolo();
                
}

Qui stai aprendo una finestra, senza memorizzarne il riferimento da nessuna parte: perderne il riferimento significa non poter più sapere nulla della vita di quella finestra. Quindi, primo intervento: memorizza il riferimento da qualche parte; secondo intervento, prima di fare quella "new", verifica 1) di non averla già fatta e 2) se l'hai già fatta, controlla che non sia ancora aperta.


Ciao.