Erklärung Java-ActionListener

Hallo,
Ich habe das Problem/Frage das mit den ActionListener nichts anfangen kann, habe auch schon mehrere Seiten im Internet durchsucht und bin immernochnicht schlau daraus geworden.

ich habe meine GUI aufgebaut (LayoutManager, Buttons, Textfelder usw.) nun möchte ich den ActionListener in eine neue Class auslagern.

nun verstehe ich nicht wie ich z.b ein Textfeld in den ausgelagerten ActionListener bekomme um mit ihn zu rechnen.

versuche mal dieses Tutorial
http://docs.oracle.com/javase/tutorial/uiswing/event…

Hi.

Vermutlich das einfachste und auch sauberste bzgl. Programmierung dürfte die Übergabe der Textfelder, etc. im Konstruktur der neuen Klassen sein. Also sowas wie MyActionListener(JTextField tf) {…}

Tom

Hallo,

wenn Du den ActionListener als eigene Klasse implementierst, kannst Du dem ja alle benötigten Abhängigkeiten übergeben. Also z.B. so in der Art (ist nur aus dem Kopf geschrieben):

class MyActionListener implements ActionListener
{
private final JTextField textfeld;

MyActionListener(JTextField textfeld)
{
this.textfeld = textfeld;
// vielleicht noch mehr?
}
}

class GUI
{

JTextField textfeld = new JTextField();
ActionListener al = new MyActionListener(textfeld);
textfeld.addActionListener(al);

}

Schöne Grüße,

Manfred

Hallo,

nun ja, auf deine Problembeschreibung kann ich nicht direkt antworten. Was genau kannst du nicht?
Und stimmt, Beispielcodes gibt es im Net mehr als genug.
Gibt es einen bestimmten Grund, den Actionlistener Zitat „in eine neue Class auslagern“?
Am Besten ist, wenn du eine kleines, kompilierbares Codebeispiel (natürlich gut kommentiert) postest, und wir es uns dann Stück für Stück vornehmen.

Torsten

Hi,
der ActionListener ist eine Schnittstelle,ein Interface oder auch leere Klasse ohne Methoden und Eigenschaften, die an ein grafisches Element wie Button usw. gebunden ist. Beim Textfeld könnte man das an ein onChange-Event binden, z.B. hier:
http://docs.oracle.com/javase/tutorial/uiswing/event…
Die Methoden und Eigenschaften muss man dann selber implementieren. Dann bindet man es an sein grafische Element, wie im Link oben gezeigt. Es gibt auch eine Möglichkeit das ganze Inline zu implementieren. Dann spart man sich die extra Klasse.

Gruß
Michael

Moin,

so ganz trivial ist die Sache nicht. Vielleicht solltest Du mal ein Tutorial (wie z. B. http://docs.oracle.com/javase/tutorial/uiswing/event…) durchsehen. Prinzipiell musst Du dem Objekt einen Actionlistener zuweisen.

Leider habe ich sowas auch noch nicht gemacht, deswegen kann ich Dir da keine Code-Beispiele geben.

Gruß
Thomas

tut mir leid, ich kann hier nicht helfen

Hallo elbro_dark,

ich denke, damit du vernünftig mit dem ActionListener arbeiten kannst, solltest du das grundlegende Verständnis haben, was dahinter steckt.

Im Grunde ist so ein ActionListener nämlich nichts anderes, als die Umsetzung des Observer/Beobachter-Entwurfsmusters. Dieses wird in der Wikipedia erklärt: http://de.wikipedia.org/wiki/Beobachter_%28Entwurfsm…

Deutlich anschaulicher, insbesondere, da du dir schon die eine oder andere Seite durchgelesen hast, wird das Entwurfsmuster in folgendem Buch erklärt: http://www.oreilly.de/catalog/hfdesignpatger/ (Kapitel 2)

Dieses kannst du dir beispielsweise kostenlos und legal auf englisch auf der Webseite von PaperC durchlesen:
http://paperc.de/5447-head-first-design-patterns-978…

Das Buch verfolgt einen andere didaktischen Ansatz, als von den meisten Büchern gewohnt, ist aber, wie erwähnt, sehr anschaulich.

Hoffe, ich konnte dir damit weiterhelfen. Bei Fragen einfach wieder melden.

Viele Grüße

Benjamin

Sorry, gerade keine Zeit.