Ma in generale, sai eseguire in "debugging" il tuo codice? Hai verificato se ad una seconda volta che apri il popup tramite azione del mouse (aspettandoti qualcosa di diverso), il costruttore del poupupmenu riceve il nuovo valore corretto e compie le azioni corrette .. o no?
In Java non esistono i "distruttori", perlomeno non nel senso come in altri linguaggi. Un oggetto resta in vita finché è "raggiungibile" (che non vuol dire solo "referenziato"!). Se riesci a fare in modo che un oggetto non risulti più raggiungibile in alcun modo, allora verrà preso in considerazione dal gc (garbage collector).