Methoden return wert?

  • Themenstarter Themenstarter Samuel
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Samuel

Gast
Interessantes Problem:
Eine Methode gibt einen Int zurück, ich ruf diese Methode auf, und die Methode erzeugt ein JFrame oder sonst was, wo man Namen eingibt.

Aber die Methode verliert ja irgendwie den Kontakt zu JFrame usw.
Wie kann ich denn dafür sorgen, dass ich den Wert direkt kriege? So ein JFrame auf setVisible zu setzen ist ja kein BlockingCall und blockiert das Programm nicht wirklich
 
:shock:

Irgendwie bist du überhaupt nicht zu verstehen. 🙁

- die Methode gibt einen int zurück. Wann denn? Woher kennst sie den?
- die Methode erzeugt ein JFrame in dem man was eingeben kann.

Hat die Eingabe irgendetwas mit deinem int-Wert zu tun? Hat der JFrame
einen Button der eine Berechnung dieses Werts starten soll?

Samuel hat gesagt.:
Aber die Methode verliert ja irgendwie den Kontakt zu JFrame usw.
Sie erzeugt ein JFrame das dann vom System (EventDispatchThread) verwaltet
wird und beendet sich dann.

Soll diese Methode, anhand der Eingaben ins JFrame, denn den Wert zurückgeben?

Dann könntest du ein JDialog nehmen, auf das gewartet werden kann.

Ein bischen genauer (von uns aus gerne in reinem Deutsch) solltest du
schon beschreiben, was du vorhast...
 
Entschuldige.
Mit Dialog geht es nicht, es muss schon anders mit TextArea und Buttons usw gelöst werden.

Im Grunde habe ich einen Server, der einen Clienten auffordert, einen Int Wert zurück zu geben. Der Client kriegt also irgendwie ne Meldung, dass er Methode "zeigeMenü" oder sowas aufrufen soll, zeigeMenü soll aber einen Wert zurückliefern, mit dem der Server dann arbeitet.
Client Server ist hier nicht so relevant, wollte nur Problem beschreiben.
zeigeMenü hat nun die Aufgabe, ein Auswahl Menü, ein Fenster, sonst was darzustellen und soll warten, bis der User sich dort in dem Fenster durchgewuselt hat und irgendwan dann auf enen Button klickt.
Dieser Klickevent wird von Actionlistener bemerkt und er denkt sicht, ok, Button x wurde geklickt, also muss ich an zeige Menü "5" zurückgeben, welches wiederum 5 returned.

So ungefähr soll das aussehen:

Code:
public int zeige Menü(){

 //erzeuge eine JFrame klasse, dort gibts halt Buttons usw, die vom listener abgearbeitet werden
 Klasse k = new JframeKlasse();

return irgendwas, was k zurückgibt


}

Das Problem ist ja, dass k mir irgendwann etwas zurückliefern soll, ich aber nicht weiß wann, eine methode wäre es halt, zu gucken ob k.getWert() was hat und wenn nicht, Thread.sleep(300) oder so, aber es wirkt so unsauber
 
Prinzipiell 2 Möglichkeiten:

1. Ein Dialog (der auch abbrechbar ist) wäre schon das richtige. Du darfst dir
unter einem Dialog nicht einfach ein "Ja/Nein/Abbrechen"-Teil vorstellen.
Es kann soviel GUI-Elemente (TextAreas, Listboxen, Buttons, ...) haben,
wie du benötigst.

2. Dein JFrame hat einen Submit-Button, dessen ActionListener die Daten
zum Server schickt.

Der 2. Weg ist der allgemein üblichere.
 
Also ich hatte so ein ähnliches Problem auch mal, und ich habe es dann so gelöst (ich weiß aber nicht, ob es auch "elegant" ist):

Code:
while(k==0)
return k;

Also es wird so lange überprüft, ob der Wert immernoch 0 (oder was anderes) ist, bis er einen Wert angenommen hat und dann gibt er k zurück.
So viel ich weiß geht das, aber ich bin mir sicher, dass es hier jemand im Forum wiedermal besser weiß und etwas "eleganteres" hat 😉

MfG DR
 
Danke, wir sind auch zum gleichen Ergebnis gelangt, dass die Methode nichts returnen sollte.

Danke nochmal
 
DR hat gesagt.:
Code:
while(k==0)
return k;
Ist da irgendwo ein Nest? :shock:
Es ist heute schon das zweite Mal daß ich hier solch ein Konstrukt sehe,
und ich kann mich auch nicht erinnern, daß mir jemals zuvor soetwas
über den Weg gelaufen ist.

Die ganze Schleife ist doch sinnlos.

Es vereinfacht sich doch zu

Code:
if (k==0) return k;
 
Ich denke er meint != 😀

Macht sonst auch ziemlich wenig sinn und extrem viel Overhead
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben