Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich versuche gerade eine Methode die ein Objekt zurückgibt zu programmieren, die allerdings das Objekt erst auf Knopfdruck zurückgeben soll. Da ich sehr oft im Stil "Erst tippen, dann denken" programmiere, hab ich es erstmal mit einem ganz normalen Action Listener auf meinen Button versucht, bei dem dann in der Methode "public void actionPerformed(ActionEvent e)" ein return blabla drinsteht. Natürlich kann das nicht funktionieren (wie auch?). Allerdings gibt es ja auch Methoden wie JOptionPane.showInputDialog, die auf Knopfdruck einen Wert zurückgeben. Also müsste es doch (zumindest in der Theorie) möglich sein, einen ActionListener auf einen Button zu setzen, der die Methode mit Rückgabe beendet. Hab ich da einen Denkfehler drin und es geht eben doch nicht? Ansonsten: Hat jemand eine Idee, wie ich das umsetzen könnte?
könntest du vielleicht etwas genauer beschreiben, was die Methode machen soll ? Mit deiner Beschreibung kann man nicht wirklich etwas anfangen. Ein Object aus einer Methode zurückgeben macht man mit "return". Wer da auf welchen Knopf drücken soll, bleibt ein Rätsel
public meinObjekt meineMethode(meineEingabe){
ActionListener listener1 = new ActionListener(){
public void actionPerformed(ActionEvent e){
// Verändere meineEingabe
}
};
JButton button1 = new JButton("Verändern");
button1.addActionListener(listener1);
ActionListener listener2 = new ActionListener(){
public void actionPerformed(ActionEvent e){
return meineEingabe; // die ist ja verändert, weil ich den Verändern-Knopf bestimmt vorher drücke...
}
};
JButton button2 = new JButton("Zurückgeben");
button2.addActionListener(listener2);
// Hier darf sich der geneigte Leser vorstellen, wie ich meine Knöpfe in ein hübsches GUI einbaue
}
Der Gedanke ist also, dass meine Methode auf Knopfdruck beendet wird und einen Wert zurückgibt - so wie es JOptionPane.showInputDialog macht. Natürlich geht es so wie ich es hier beschreibe nicht, da
Code:
return meineEingabe;
versucht, die Methode actionPerformed zu beenden und etwas zurückzugeben (was nicht funktionieren kann, da die Methode actionPerformed nichts zurückzugeben hat). Wenn ich return aber ausserhalb des ActionListeners aufrufe, wird die Methode sofort etwas zurückgeben, noch ehe der Benutzer etwas mit dem anderen ActionListener verändern kann.
ich denke mal, du hast ein konzeptionelles Problem. Wenn deine GUI ein Frame ist, dann wird dieses angezeigt und anschließend wird die Methode beendet. Hier jetzt darauf zu warten, daß der Benutzer einen Button drückt, ist nicht im Sinne des Erfinders. Falls du einen Dialog benutzt, blockiert der Aufruf sowieso, bis der Dialog geschlossen wird. Dann kannst du ganz normal mit "return" ein Objekt zurückgeben.
Ich glaub mein erster Denkfehler ist, dass JOptionPane ein Sonderfall von JDialog ist und nicht von JFrame... ich werd mich mal in JDialog einlesen, villeicht find ich da ne Lösung... Danke für deinen Hinweis.
Falls du einen Dialog benutzt, blockiert der Aufruf sowieso, bis der Dialog geschlossen wird. Dann kannst du ganz normal mit "return" ein Objekt zurückgeben.