# JFrame warten lassen



## Catscratch1 (29. Jul 2004)

Hallo,

ich habe einen JFrame. Wenn man im Menü auf Einstellung konfigurieren klickt, kommt ein JDialog, in dem der User Daten eingeben kann.
Die Daten sollen, nach einem Klick auf OK, in dem JFrame über nommen werden


```
DatabaseConfigManager db = new DatabaseConfigManager();

            String[] temp = db.getConfig();
```

Die Daten werden dabei über die getMethode geholt.

Wie schaff ich es, dass die getMethode erst ausgeführt wird, nachdem der User im JDialog den OK Button gedrückt hat?
Habe leider von Threading keine Ahnung!


----------



## Archy (29. Jul 2004)

Ich gehe jetzt mal davon aus, dass dein Dialog über die "db" Variable referenziert wird.

Du musst den Dialog nur Modal machen:


```
db.setModal(true);
```

Wenn du dann den Dialog sichtbar machst bleibt deine Anwendung an dieser Stelle stehen und macht erst weiter, wenn der Dialog verschwunden ist.


----------



## Catscratch1 (29. Jul 2004)

danke!


----------



## Partheeus (29. Jul 2004)

Darf man fragen wie Du das realisierst, das die Daten in den JFRAME mit übernommen werden?
Sitze da schon seit 4 Stunden dran, aber krieg das nicht gebacken. :-(

Hab ein JFrame, von dem aus ich ein JDialog öffne. Hier kann man nun Sachen aus einer DB ein und austragen etc.
Wenn ich den JDialog nun wieder schließe, soll automatisch das JFrame, diese Änderungen übernehmen.

Habe nicht wirklich einen Plan wie das funktionieren soll?!

Für Hilfe oder Denkanstöße wäre ich echt dankbar.


----------



## L-ectron-X (29. Jul 2004)

@Partheeus: Oh ja, das kannte ich auch. Ich stellte damals die gleiche Frage als Einstand in dieses Forum. 
Ich habe den Thread noch mal heraus gesucht. Da findest Du alles, was Du brauchst, um dieses Problem zu lösen:
http://www.java-forum.org/de/viewtopic.php?p=17805


----------



## Guest (29. Jul 2004)

Also du könntest das ganze auch dur ein String msg=JOptionPane.showInputDialog("text") lösen daduch wird das Programm angehalten bis der ok Button geklickt wird.

mfg marian


----------



## L-ectron-X (29. Jul 2004)

Genau. Das geht auch. Zumindest, wenn der JOptionPane nicht viele Eingaben entgegen nehmen soll.
Ich weiß nicht, in wie fern ein JOptionPane dahin gehend gestaltet werden kann.


----------



## Partheeus (29. Jul 2004)

Vielen vielen Dank erstmal für Eure Hilfe!!! ;-)

Hab das jetzt anders gelöst, besser gesagt mein Kumpel hats gelöst. 
Ich gebe jetzt einfach eine MemberVariable durch alle Klassen mit.

Keine Ahnung was da vor sich geht, aber ich bin am studieren, was da passiert.  
Hab erst sei nem halben Jahr mit JAVA zu tun. ;-)

Also, dann nochmals vielen Dank für Eure Hilfe!!!

Es grüßt ganz freundlichst

Partheeus


----------



## Catscratch1 (29. Jul 2004)

Sorry, dass ich jetzt erst antworte:

Also ich öffne den JDialog, in dem alle Sachen eingegeben werden. Die Sachen werden dann nach einem Klick auf OK im JDialog in ein String[] geschrieben.
Nachdem der JDialog zu ist, geht das Programm im JFrame weiter.

Der Frame holt mit myDiag.getData(); das String[] raus. Ganz simpel und zuverlässig ;-)


----------



## Partheeus (30. Jul 2004)

Hmm, ich weiß nicht, geht das denn auch bei mehreren Einträgen?
Also ich trag da ja zum Teil viele Sachen in den JDialog?
Außerdem sollte die Taskleiste schon sich so aktualisieren, das sie die Datenbank neu lädt.

Hab hier mal n Screenshot. ;0)    :


----------



## bygones (30. Jul 2004)

erstell dir doch eine Klasse die die Eingaben speichert (also eine einfache Wrapper Klasse). Die gibt der Dialog zurück...

ich mach das immer gerne so:

```
public DerDialog extends JDialog {
  private DieKlasse dieKlasse;

  private DerDialog(JFrame owner) {
    super(owner, "Bin der Dialog", true);
    [...]

  }

  public static DieKlasse getDaten(JFrame frame) {
    DerDialog d = new DerDialog(frame);
    return d.dieKlasse;
  }
}
```
_DieKlasse_ ist die Wrapper Klasse die die Infos speichert die man im Dialog eingeben kann. Die werte werden gesetzt, wenn der User auf OK z.b. drückt. Der Dialog schließt sich und die statische Methode gibt die gerade eben initalisierte Instanz zurück....
aufrufen im JFrame geht dann über

```
DieKlasse dk = DerDialog.getDaten(this);
```


----------



## L-ectron-X (30. Jul 2004)

[schild=11 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Warum noch suchen? Es steht doch alles da --->[/schild]http://www.java-forum.org/de/viewtopic.php?p=17805
Ich weiß gar nicht warum es noch Fragen gibt.


----------

