# mehrere Eingabefelder in InputDialog



## chrissy (23. Aug 2005)

Hallo,

ist es möglich einen inputDialog mit mehreren Textfeldern auszustatten???

Falls nicht, kurze Schilderung meines Problems ...

Ich habe ein Frame in dem der Benutzer Werte eingibt, falls er nicht den konkreten Wert1 zur Hand hat, möchte ich die Möglichkeit bieten, daß nach dem Klick auf einen Button ein zweites Frame / Dialog geöffnet wird, in dem er Werte zur Berechnung von Wert1 eingegibt. Danach wird Wert1 berechnet und sollte an das erste Frame zurückgegeben werden.

Bitte, bitte helft mir bin ein absoluter Anfänger und verzweifel bald daran ...

Danke


----------



## schmalhans (23. Aug 2005)

Willst du es mit JOptionPane machen?


----------



## chrissy (23. Aug 2005)

JOptionpane wäre nicht schlecht, aber eigentlich ist es mir egal, hauptsache ich kann irgendwie aus einer Klasse / Methode einen Dialog aufrufen, wo ich Werte eingeben kann und einen Rückgabewert erhalte


----------



## schmalhans (23. Aug 2005)

Dann würd ich dir raten es ganz normal mit einen Frame abzuwickeln. In welchen du einen Button (zb. "Wert berechnen") hast und dieser dir einfach einen neuen Frame aufruft und den Wert einfach wegspeichern.


----------



## chrissy (23. Aug 2005)

OK, so versuch ich es im Moment, aber wie kann ich den Wert so wegspeichern, daß ich ihn in der aufrufenden Klassen abfragen kann???

Ich hab also einen Frame (Klasse1), aus diesem ruf ich per Buttonklick ein neues anderes zweites Frame (Klasse2) auf. Wie bekomm ich den Rückgabewert in Klasse1  :?: 

Oder wie muß ich das zweite Frame aufrufen, damit ich einen Rückgabewert erhalte und wann gebe ich den Wert (per Return?) zurück   :cry:


----------



## schmalhans (23. Aug 2005)

In deinem actionPerformed()..... übergibst du die Variable in deinem neuen Frame.

Dann füllst du die Variable in deinem Frame und die Sache ist gerizzt.

Hast du Syntaxprobleme oder Verständnisprobleme?


----------



## chrissy (23. Aug 2005)

Hallo,

sorry daß ich mich so dumm anstelle   

Ich habe wohl eher Syntaxprobleme ... 

Danke


----------



## schmalhans (23. Aug 2005)

Dafür muss man sich entschuldigen. Nicht jeder kann alles können. Bin selber nicht wirklich der JAVA-Gott. 

Ich bastel dir schnell nen Syntax, dauert nur n paar Minuten.


----------



## chrissy (23. Aug 2005)

Danke, supernett von dir :applaus:


----------



## schmalhans (23. Aug 2005)

```
public void actionPerformed(ActionEvent e) 
{
		if("END".equals(e.getActionCommand()))
		{
		     //tu was
		}
		else if("CAL".equals(e.getActionCommand()))
		{
		    //tu auch was
		}
		else if("NEU".equals(e.getActionCommand()))
		{
		    test = txtStartzeit.getText();
                                    //Katze ist dein neues Fenster
                                    //So übergibst du werde an ein neues fenster
		    Katze k = new Katze(test);

		}
                                .
                                .
                                .
}
```


und diese Vaiable fängste in dem Konstruktor ab.


----------



## chrissy (23. Aug 2005)

Danke, werde ich gleich ausprobieren ...


----------



## schmalhans (23. Aug 2005)

Kein Problem. Wennste noch Fragen hast, raus damit.


----------



## chrissy (23. Aug 2005)

OK ... hab es ausprobiert ... funzt auch super um Werte in ein neues Fenster zu laden ...

aber ... sorry ich glaube ich hab mich falsch ausgedrückt ...
ich habe ein Fenster bereits geöffnet ... von diesem öffne ich dann meinen Dialog und dieser Dialog muß dann einen Wert an das bereits geöffnete Fenster zurückgeben, halt so wie ein InputDialog, nur muß die Eingabe von mehreren Werten möglich sein und nicht nur von einem Textfeld, wie im Code unten.


```
String s = (String)JOptionPane.showInputDialog(
                                        frame,
                                        "Text eingeben:",
                                        "Dialog",
                                        JOptionPane.PLAIN_MESSAGE,
                                        icon,
                                        null,
                                        "Test"");
```


----------



## schmalhans (23. Aug 2005)

Da kannst jetzt eine Klasse zb. Class Werte() erstellen.
In dieser Klasse hast du dann Variable zb. int wert1, wert2, wert3 etc.

Du erzeugs eine Instanz dieser Klasse
und diese Instanz übergibs du dann dem geöffneten Fenster (anstatt in meinem vorherigen Beispiel der String). Und kannst nun die Werte beliebig setzen und du hast diese auch in deinem eigentlichen Frame/Dialog/Formular.

Das ist eine Möglichkeit.


----------



## chrissy (23. Aug 2005)

Darüber hab ich mal was gelesen, dabei übergebe ich eine Objektreferenz, oder?
Und wenn ich die Werte dann in meinem zweiten Fenster änder werden automatisch die Werte im ersten Fenster mitgeändert ???   :?


----------



## schmalhans (23. Aug 2005)

Du übergibst die Objektinstanz. Jede Instanz hat sogenannte Instanzvariablen und diese Variablen kannst du dann im 2ten Fenster ändern.

zb.

```
Katze k = new Katze();
k.name = "Mausi";
k.groesse = "richtig fett";
```

So kannst du diese Werte ansprechen. Egal aus welchen Fenster, sobald du die Instanz (in diesem Fall k) übergibst, kannstd du die Werte abrufen (ändern/lesen/etc).


----------



## chrissy (23. Aug 2005)

oh danke danke danke, genau das ist es was mir gefehlt hat ...   

ich wußte nicht, daß ich Variablen aus dem ersten Fenster abfragen kann, wenn ich das zweite Fenster einmal initialisiert habe ... nun funzt es super *tauschendfachknuddelundknutsch*


----------



## schmalhans (23. Aug 2005)

Gern geschehen.


----------

