# bei ButtonKlick Fenster öffnen...



## SixDark (14. November 2003)

Hi!

Ich möchte in Java ein Fenster (Frame) öffnen und zwar wenn ich auf einen Button geklickt habe. Das Fenster hab ich schon zusammengebaut. Ind diesem Fenster mach ich eine Auswahl, die wiederum nach einem Klick auf 'Ok' in das alte (aufrufende) Frame übergeben werden soll. Bzw. Soll eine Funktion aufgerufen werden, die sich in dem alten Frame befindet und dieser soll ein Wert aus dem neuen Fenster übergeben werden. Irgendwie blicke ich es nicht... ;( 

Ich hoffe das war verständlich

Übrigens nutze ich die NetBeansIDE - falls das hilfreich sein sollte...

..::Six Dark::..


----------



## Thomas Kuse (18. November 2003)

In die Fensterklasse des neuen Fensters kannst Du eine Referenz der Instanz deiner Haupfenster-Klasse packen und dann von dem neuen Fenster aus deine spezielle Funktion aufrufen.

Ich glaube das ganze funktioniert aber nur, wenn das andere Fenster nicht modal geöffnet wird.

Letztlich ist das aber nicht wirklich sauber und Software-Entwicklungs-Technisch sogar Irrsinn, da man ja alle Klassen soweit wie möglich entkoppeln sollte!


----------



## SixDark (20. November 2003)

Hi!

Hmmm, wieso Irrsinn? Ich öffne eine Form durch einen Buttonklick. Dort wähle ich einen Kunden aus (in einer jTable), bekomme also dort die eindeutige Kundennummer. Mit dieser Kundennummer möchte ich nun im alten Fenster eine Funktion aufrufen, der ich diese Kundennummer übergeben muß. Diese Funktion ruft dann spezielle Daten des Kunden ab und stellt sie im alten Fenster in verschiedenen Textboxen dar. Das Auswahlfenster wird nach Aufruf der Funktion geschlossen. Verstehst Du wie ich das meine? Kennst Du eine bessere Lösung?

Natürlich könnte ich eine extra Kunden-Klasse erstellen, und dieser die Daten der Abfrage übergeben. Aber wie bekomme ich dann diese Klasse an das alte Fenster übergeben damit ich die Daten dort darstellen kann?

MfG
..::Six Dark::..


----------



## Thomas Kuse (20. November 2003)

Ist natürlich jetzt ein bisschen schlecht so trocken deine Software-Struktur zu analysieren.

Würde das nicht funktionieren? :
- Du drückst auf den Knopf.
- Du Erstellst die Klasse der Form mit all Ihren Daten
- Dann rufst Du eine Funktion innerhalb deiner Form-Klasse auf, die das Fenster nach vorne holt
- Deine Kunden werden angezeigt.
- Du machst Deine Auswahl.
- Du drückst auf OK
- Deine Funktion liefert die Kundennummer an das Hauptprogramm zurück
- Innerhalb des Hauptprogramms startest Du dann die Funktion die du brauchst

So würden alle Sachen voneinander entkoppelt sein.


----------



## SixDark (20. November 2003)

Ja, so trocken ist das natürlich etwas blöd. Also folgendes...

Ich rufe in meinem Hauptfenster das neue Fenster folgendermaßen auf:


```
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        searchKunde1 test = new searchKunde1(new javax.swing.JFrame(), false);
        test.show();
        test.setSize(500,240);
    }
```

searchKunde1 ist in dem Fall das Fenster in dem ich den Kunden auswähle.
In dem Hauptfenster gibt es eine Funktion, welche ausgeführt werden soll nachdem ein Kunde ausgewählt wurde:


```
private void executeSQL(int Kundennummer) {
        //hier soll dann der auszuführende Code rein...
    }
```

Ist es jetzt besser? Ich weiß leider nicht wie Du das mit der Funktion meinst, die das Fenster nach vorn holen soll. Und wie bekomme ich das Auswahlfenster dazu die Kundennummer an das Hauptfenster zu übergeben? Ich bin noch neu in Java, aber ich will das hinkriegen!  Das muß einfach irgendwie funktionieren...

..::Six Dark::..


----------



## Thomas Kuse (20. November 2003)

Versuch mal das Fenster modal zu erstellen!
Das ganze Programm wartet dann auf die Beendigung des Fensters.
Gleich nach dem show-Befehl kannst Du dann eine Funktion innerhalb deiner Fenster-Klasse aufrufen, die dir die ausgewählte Kundennummer zurückgibt!

Dein size solltest Du aber nach Möglichkeit vor dem show-befehl machen!

PS: Natürlich bekommen wir das hin! Bloss keine Angst!


----------



## SixDark (20. November 2003)

Super! Jetzt funktioniert es genauso wie ich es haben wollte!

Vielen Dank für Deine Geduld!  

MfG
..::Six Dark::..


----------



## Thomas Kuse (20. November 2003)

Hat es denn genauso funktioniert?


----------



## SixDark (21. November 2003)

Ich habs eigentlich genauso gelöst wie Du es vorgeschlagen hast.

So rufe ich das Auswahl-Fenster auf:


```
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        searchKunde1 KundeSuchen = new searchKunde1(new javax.swing.JFrame(), true);
        KundeSuchen.show();
        g_Kundennummer = KundeSuchen.getKundennummer();
        executeSQL(g_Kundennummer);
    }
```

Und hier die Funktion, die mir dann die Kundennummer zurückliefert:


```
public int getKundennummer()
    {
        int i_Kundennummer;
        i_Kundennummer = Integer.parseInt(jTextField2.getText());
        return i_Kundennummer;
    }
```

Und das klappt so wunderbar! Vielen Dank!

MfG
..::Six Dark::..


----------

