PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Auf laufende Instanz zugreifen?



Matflasch
25-08-2004, 10:54
Hi,

Ich habe nun ein schon relativ grosses Programm geschrieben um Musik-CDs zu verwalten.
Ich habe nun ein Haupt-Fenster, von dem aus ich durch ein Menü einige Dialoge starten kann.
Die Dialoge sind alle je in einer seperaten Klasse. Diese Klassen basieren allerdings nicht auf JDialog sondern auf JFrame.
Soweit dazu.
Wie kann ich nun, wenn ich das Main-Programm gestartet habe und es gerade läuft, von einem Dialog auf diese Instanz zugreifen?
So dass ich dort Variablen ändern kann durch setter-Funktionen?
Im prinzip geht es darum:
Mein Main-Programm hat eine Tabelle, die sich sortieren lassen soll. Dazu gibts nen Dialog, bei dem man einstellen kann nach welcher Kategorie sortiert werden soll, dann welche Ansicht gewählt werden soll und ob aufsteigend oder absteigend sortiert werden soll.
Diese 3 Werte will ich nun von dem Dialog aus zu dem Main-Programm schleusen und die Tabelle neu füllen.
Wenn ich nun, nachdem beim Dialog auf OK geklickt wurde, eine neue Instanz erstelle und versuche den ContentPane von der Klasse zu bekommen, dann bringt mir das gar nix :(
z.B.:
MskMain msk = new MskMain();
msk.getCtpMskMain();
msk.setStrOrder("ASC"); // so in der art sollte es erstmal klappen.
msk.fillTable();

Nur kann ich nicht direkt auf die laufende Instanz zugreifen.
Geht das überhaupt oder bin ich nur zu blind?
Jetzt noch wieder alles abändern wäre nicht so toll....

Danke schonmal

fs111
25-08-2004, 11:36
Entweder übergibst Du allen Kindfenstern eine Referenz auf das Hauptfenster im Konstruktor mit und speicherst es in einer Member-Variable, oder Du setzt bei Deiner Hauptklasse das Singleton-Design-Pattern um, welches Dir garantiert, dass es immer nur eine Instanz der Klasse gibt.

http://www.patterndepot.com/put/8/JavaPatterns.htm erklärt alle möglichen Pattern mit Java-Beispielen, da ist AFAIR auch Singleton bei.

HTH

fs111

Matflasch
25-08-2004, 12:37
Danke für die schnelle Antwort!

Hab es nun mit einer Referenz gemacht (hätte ich auch selbst drauf kommen können.... *g*)

Naja, danke!

Klappt wunderbar nun...

peschmae
25-08-2004, 14:01
Solltest du nicht eigentlich auch mit getParent() eine Referenz auf die eintsprechende Klasse zurückerhalten?

Das würde natürlich voraussetzen, dass das Parent auch ein JFrame ist (entsprechende Exception müsstest du abfangen)

MfG Peschmä

Matflasch
26-08-2004, 11:05
Hmm probiert hatte ich das, allerdings funktioniert das nicht in so fern, dass ich die laufenden Instanz bekommen habe...
Mit der Referenz im Konstruktor klappt das nun aber wunderbar :)

kinnla
29-08-2004, 05:10
Wenn man getParent() für eine Instanz von JFrame aufruft, bekommt man afaik null zurück. JFrames haben im Gegensatz zu JDialogs kein Oberfenster.

+++ kinnla

peschmae
29-08-2004, 09:06
argh, natürlich. Bei JDialog kann man ja den "owner" explizit übergeben. Ich dachte nur möglicherweise geschieht das bei JFrame implizit - d.h. das getParent() liefert dann das Objekt zurück, welches die JFrame erzeugt hat - das ist aber nicht der Fall :)

MfG Peschmä