Singleton beim JFrame zerstören

dalco

Aktives Mitglied
hallo,
ich habe ein hauptprogramm mit einer menuleiste oben, hieraus öffne ich per klick einen neuen jframe ,der aufruf ist:
Java:
THONLISTEN_GUIBuilder_Nina start = THONLISTEN_GUIBuilder_Nina.getInstance();
start.start();
ich nehme den singleton, die dieser aufgemachte frame oben wieder menupunkte hat und unter grafiken anzeigt, die über seine menupunkte verändert werden, dazu gibt es in dem jframe einen reload punkt, der die panels austauscht.

nun möchte ich aber das dieser singleton beim beenden dieses frames (zb x-klicken rechts oben) zerstört wird, denn sonst passiert immer das, das wenn ich ihn zb mit der maus bewege und igrendwann später vom hauptprogramm aus dieses nochmal ansehen will er mit den zuletzt angezeigten daten und an der zuletzt gewesenen stelle erscheint???

also kann man ihn beim x-klick schließen komplett auf dem speicher killen, sodass vom hauptprogramm aus alles wieder bei 0 anfängt? - oder macht man sowas ganz anders, funktionieren tut es ja, sieht aber unschön aus und gefällt mir nicht, weiß es leider nicht besser.
danke für eure antworten
mfg
Tino
 
ich muss sagen, ich versteh den text nicht ganz so recht, was wie und wo genau passiert.

aber die einfachste und sinnigest lösung: Nutz kein Singleton... das Beispiel zeigt nett, wie problematisch arbeiten mit dem global state ist und welche auswirkungen das hat.
 
ich nutz den singleton um im frame die panels auszutauschen, in der menuleiste oben sind viele buttons, die mir daten aus ner datenbank zusammenstellen und unten im grafikpanel jeweils angezeigt werden, wie wechselt man sonst die daten im panel wenn nicht mit einer panel-reload methode gesteuert von einer instanz der ganzen sache?
gruss tino
 
Ich verstehe das Problem auch nicht so ganz. Du benoegtigst eine Referenz auf deine Panel Instanz. Dies muss nicht ein Singleton sein. Wenn du das Frame schliesst rufst du
Code:
frame.dispose();
auf und setzt alle Referenzen auf das Frame auf null.

Wenn du das Frame wieder anzeigen musst erstellst du einfach eine neue Instanz


Alternativ kannst du ja auch eine
Code:
reset()
Methode implementieren, welches dir das Panel in den Ursprung zueruecksetzt
 
danke für eure antworten,
ich habe den songleton gelassen und das ganze umstrukturiert und letztlich wieder auf globale variablen zurückgegriffen
schönen abend
tino
 

Zurück
Oben