# Frame - Panel - Dialog rückgabe wert



## sence (5. Apr 2010)

Hallo Forum,

Ich versuche verzweifelt den Rückgabe Wert eines JDialoges im Hauptfenster auszulesen, jedoch finde ich keine Lösung....


Um einen Artikel auszuwählen, öffnet sich ein JDialog welches einen JFrame übergeben bekommt.
in dem Dialog habe ich eine JTable mit den Artikeln.

nun würde ich gerne, wenn jemand einen artikel anklick diesen an das hautpfenster zurück geben.
Das auslesen aus der Tabelle funktioniert, also habe ich den Wert vor mir liegen, jedoch bekomme ich Ihn nicht an das Hauptfenster zurück :/

im Hauptfenster (JPanel) wird beim klick auf den Button artikel hinzufügen das Fenster aufgerufen.

```
if(cmd.equals("ARTIKELHINZUFUEGEN")) {
rechnungen.AddArtikel ADDARTIKEL = new rechnungen.AddArtikel("Artikel hinzufügen");
dialog = new JDialog(ADDARTIKEL);
```

im Dialog dann in der Methode des Tabellen Listeners:

```
class SharedListSelectionHandler implements ListSelectionListener {
        public void valueChanged(ListSelectionEvent e) { 
            ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                    
            if (lsm.isSelectionEmpty()) {                
            } else {

                int maxIndex = lsm.getMaxSelectionIndex();
                String table_artnr = (String) defaultTableModel.getValueAt(maxIndex,1);  
            
 -> -> -> wie kann ich nun table_artnr an das hautpfenster zurück geben ?
und dieses Dialogfenster schließen?

            }     
        }
    }
```

Vielen Dank!


----------



## SlaterB (6. Apr 2010)

das Hauptfenster ist doch ein Objekt, welches über eine Variable/ Referenz verfügbar sein kann,
dort dann set..(...); aufrufen,
der Dialog kann genauso wie ein beliebiges Objekt angesprochen werden, dispose() müßßte ihn schließen

> zurück geben ?

klingt natürlich etwas gefährlich, es findet ja kein direkter Aufruf statt mit Rückgabewert


----------



## Foermchen82 (6. Apr 2010)

Versuch doch erstmal den Dialog auf visible = false zu setzen. Dann kannst du im Hauptfenster noch darauf zugreifen, und den selektierten Wert auslesen. Anschließend Zerstörst du die Referenz auf den Dialog.


----------



## SlaterB (6. Apr 2010)

bei dispose ist das Objekt an sich aber auch weiter verfügbar bis nirgendwo mehr referenziert,
ein echtes Zerstören gibts in Java kaum


----------



## Foermchen82 (6. Apr 2010)

SlaterB hat gesagt.:


> bei dispose ist das Objekt an sich aber auch weiter verfügbar bis nirgendwo mehr referenziert,
> ein echtes Zerstören gibts in Java kaum




Richtig, aber er kann

dialog = null

setzen und der GC die Möglichkeit geben aufzuräumen.

Wichtig ist halt nur, dass er die Daten aus dem Dialog liest und nicht den Dialog schreiben lässt. Das wäre unschön!!


----------



## sence (6. Apr 2010)

Hey danke, hab gestern nacht noch nen kleines Beispiel hier gefunden, habe es nun hinbekommen.

Vielen Dank für die Hilfe!


----------

