Listener erstellen

usrr

Bekanntes Mitglied
Hallo,

wie ich gerade so vor mich her programmiere fällt mir auf, dass ich zum wiederholten mal einen Listener implementiere. Eigentlich ist es immer das gleiche: Eine ArrayList, add/remove-Methoden mit Bezug auf ein Bestimmtes Interface.

Ich habe jetzt das Gefühl, dass ich mir unnötige Arbeit mache und, dass es dafür eine schnelle/einfache "Vorrichtung" gibt. Kann mir dazu jemand nähres sagen?
 

pl4gu33

Top Contributor
ich bin mir gerade nicht sicher, was du wirklich damit meinst :D
kannst du mal nen bisschen Code posten, dann kann man dir bestimmt besser helfen.... der Begriff "Listener" stört mich hier irgendwie :D
 

usrr

Bekanntes Mitglied
Ich habe eben etwas gegoogled und den Begriff Observer/Observable gefunden. Das müsste das sein was ich braucht. Keine Ahnung woher ich den Begriff Listener habe.

Ich lese mich da gerade ein, es werden sicher noch Fragen auftauchen. Eine habe ich schon. Im Moment wundere ich mich warum "Observer" eine Klasse und kein Interface ist.
 

eRaaaa

Top Contributor
ich bin mir gerade nicht sicher, was du wirklich damit meinst :D
kannst du mal nen bisschen Code posten, dann kann man dir bestimmt besser helfen.... der Begriff "Listener" stört mich hier irgendwie :D

Was stört dich an dem Wort?
-> Galileo Computing :: Java ist auch eine Insel - 10 Architektur, Design und angewandte Objektorientierung

Was ich aber auch nicht verstehe ist, worauf du (usrr) hinaus willst ?! Man kennt deine Listener ja nicht, vlt kann man einen Allgemeinen schreiben den du immer wiederverwenden kannst, vlt aber auch nicht :)
 

usrr

Bekanntes Mitglied
Das konkrete Proble ist, dass ich einen String brauche, der andere Klassen darüber informiert, dass er geändert wurde. - wahrscheinlich gibts den aber schon vorgefertigt.
 
B

bygones

Gast
Das konkrete Proble ist, dass ich einen String brauche, der andere Klassen darüber informiert, dass er geändert wurde. - wahrscheinlich gibts den aber schon vorgefertigt.

der String selbst kann das nicht, aber er sollte ja in irgendeiner Klasse/Struktur stecken.

Andere Klassen melden sich bei dieser Struktur/Klasse als Listener an und die Klasse schickt dann an alle ihre Listener eine Nachricht wenn sich der String geaendert hat.

Kann sein dass dies mit Observable/Observer geht, oder eben du hast deine eigenen Listener.

Listener ist einfach ein Interface - mehr nicht.
 

usrr

Bekanntes Mitglied
Genau, dass mache ich ja jetzt schon eine Weile. Aber ich schrieb ja, dass ich vermute, dass man sich an dieser Stelle etwas arbeit sparen kann. Statt immer wieder selbst einen Listener zu implementieren, müsste es doch reichen nur die wesentlichen Dinge zu schreibn.

Gerade die ArrayList und das adden/removen der Listeners, sollte doch immer gleich bleiben.
 
S

SlaterB

Gast
dass ein Observer seine Listener in einer Liste organisiern muss usw. ist in der Tat ärgerlicher Standard,
würden alle Klassen von einer ObserverBase-Standardklasse erben, ließe sich das vermeiden,
aber nur für diese 10 Zeilen will man kaum die mächtige Möglichkeit der nur einen Vererbung aufbrauchen

------

ein kleiner Trick kann noch sein, die Listenerarbeit generell in eine eigene, anfangs aus Sparsamkeit statische, Klasse auszulagern,

Java:
statt
x.addListener(y);
heißt es dann
Listener.add(x,y);

die Klasse Listener verwaltet allgemein, wer auf wen hört,
die Klasse von x muss sich nur bei der Informierung darum kümmern:
Java:
Listener.inform(x, event); 
// gibt das event an alle Listener von x, 
// kann auch gewisse Initialisierungsarbeit übernehmen, etwa x als source im event eintragen

für unterschiedliche Listener sieht es auf diesem Wege allerdings nicht so gut aus
 
B

bygones

Gast
Genau, dass mache ich ja jetzt schon eine Weile. Aber ich schrieb ja, dass ich vermute, dass man sich an dieser Stelle etwas arbeit sparen kann. Statt immer wieder selbst einen Listener zu implementieren, müsste es doch reichen nur die wesentlichen Dinge zu schreibn.
wenn die Listener immer gleich sind, dann reicht es ja einmal das Interface und eine Registry zu haben (zb wie Slaters vorschlag).

Aber wie gesagt Listener sind nur Interfaces und die koennen eben immer anders aussehen, andere Methoden, andere Parameter - da gibt es nicht viel zu vereinheitlichen
 

usrr

Bekanntes Mitglied
Ich meine gelesen zu haben, dass Sun kritisiert wurde, dass diese Funktionalität nicht in Object implementiert wurde. Ich denke, dass ist was Slater mit "ObserverBase-Standardklasse" meint.
 

usrr

Bekanntes Mitglied
Ich habe das Problem als Anlass genommen mir mein eigenes Observer/Observerable-Muster über Generics zusammen zu bauen, da ich mich sowieso seit langem schon damit beschäftigen wollte.

Ich hänge jetzt aber bei der Definition der Observable-Klasse:

Java:
class Observable<T>

Wie teile ich Java mit, dass T das Interface Observer implementieren muss?
 

usrr

Bekanntes Mitglied
Danke. Das hatte ich schon probiert, aber jetzt festgestellt, dass ich noch gar keine Methoden im Interface deklariert hatte.

Edit:

Aber nochmal zurück zu Slaters Kommentar. Wenn man sich nicht um die Möglichkeit der Vererbung bringen möchte, was spricht dagegen, das Observable über ein Feld in die Klasse zu integrieren?
 
S

SlaterB

Gast
"Wenn man sich nicht um die Möglichkeit der Vererbung bringen möchte, was spricht dagegen, das Observable über ein Feld in die Klasse zu integrieren? "
also mir ist der Satz zu kompliziert,
wenn du mich irgendwas fragst, dann ausführlicher, mit Beispielcode usw.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
D String value change listener Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Problem mit Listener Java Basics - Anfänger-Themen 0
P Listener registrieren Java Basics - Anfänger-Themen 40
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
F Listener schreiben Java Basics - Anfänger-Themen 1
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
J Listener Java Basics - Anfänger-Themen 4
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
llabusch Kombinationsfeld - LISTENER Java Basics - Anfänger-Themen 0
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
K On Click listener Problem Java Basics - Anfänger-Themen 4
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
G Listener ohne Objekt Java Basics - Anfänger-Themen 5
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
H Eigenen Listener einbauen Java Basics - Anfänger-Themen 5
K Key Listener bei 2 gleichzeitig gedrückten tasten Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
K Erste Schritte table Listener noob frage Java Basics - Anfänger-Themen 3
E eigenständige Listener-Klasse Java Basics - Anfänger-Themen 9
T Motion listener Java Basics - Anfänger-Themen 10
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
M listener Java Basics - Anfänger-Themen 16
L Listener Problem in Klasse Java Basics - Anfänger-Themen 8
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
L Window Listener Java Basics - Anfänger-Themen 2
Kenan89 JTable: Listener Java Basics - Anfänger-Themen 4
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
A action listener Java Basics - Anfänger-Themen 8
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
E Mehrere Listener auf einen Button? Java Basics - Anfänger-Themen 3
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
X Problem bezüglich Key Listener Java Basics - Anfänger-Themen 3
Y Button hört nicht auf Listener Java Basics - Anfänger-Themen 5
H JTable, Listener und CellEditor Java Basics - Anfänger-Themen 8
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
M Listener Objekte Java Basics - Anfänger-Themen 12
S Applet Key Listener Java Basics - Anfänger-Themen 6
J Action Listener Java Basics - Anfänger-Themen 2
G Probleme mit Listener Java Basics - Anfänger-Themen 27
B Wert einer Variable mit Listener ueberwachen Java Basics - Anfänger-Themen 3
F Port Listener Java Basics - Anfänger-Themen 9
J JComboBox Listener Java Basics - Anfänger-Themen 6
J Window-Listener funktionieren nicht Java Basics - Anfänger-Themen 7
N Frage zu Listener für Textfelder Java Basics - Anfänger-Themen 5
Benji0815 Eigenen Listener schreiben Java Basics - Anfänger-Themen 13
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
S Key-Listener richtig "einbauen" Java Basics - Anfänger-Themen 42
S Listener von ausserhalb aufrufen Java Basics - Anfänger-Themen 2
S Action Listener Java Basics - Anfänger-Themen 6
Sweety Listener in Swing Java Basics - Anfänger-Themen 8
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
Developer_X Mouse MOTION listener example Java Basics - Anfänger-Themen 5
J Mouse-Listener Java Basics - Anfänger-Themen 3
I Listener Klassen in Package Java Basics - Anfänger-Themen 3
StickToFreak Applet -> GameLoop + Listener / Listener funktioniert nicht Java Basics - Anfänger-Themen 22
B externer Listener für Zeichenbereich? Java Basics - Anfänger-Themen 2
D dialog listener? Java Basics - Anfänger-Themen 2
G Key Listener arbeitet Fehlerhaft Java Basics - Anfänger-Themen 6
C Listener und Events Java Basics - Anfänger-Themen 10
E Listener Java Basics - Anfänger-Themen 2
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
G jtable listener wenn zeile markiert wird Java Basics - Anfänger-Themen 6
S Action Listener Funktioniert nicht Java Basics - Anfänger-Themen 6
D Kombinationsfeld => Realisierung im Listener? Java Basics - Anfänger-Themen 2
G LIstener bei JavaMail Java Basics - Anfänger-Themen 2
G Context Listener des Apache Tomcat verwenden Java Basics - Anfänger-Themen 4
D Listener bzw. Interfaces Java Basics - Anfänger-Themen 7
A Wo/Wie Event Listener Java Basics - Anfänger-Themen 3
G Window Listener? Java Basics - Anfänger-Themen 2
G 2 Listener wiedersprechen sich. Java Basics - Anfänger-Themen 12
G Listener für JPanel für Statusmeldungen Java Basics - Anfänger-Themen 3
F Listener für Variable Java Basics - Anfänger-Themen 29
A Gibt es standardmässig in Java einen Verzeichnis-Listener? Java Basics - Anfänger-Themen 6
N Listener für datei Java Basics - Anfänger-Themen 13
S Mit Listener AWT Objekte ansprechen Java Basics - Anfänger-Themen 2
G listener für radiobutton Java Basics - Anfänger-Themen 1
G Listener Java Basics - Anfänger-Themen 5
G Listener Problem Java Basics - Anfänger-Themen 3
B Wiso funktioniet das nicht? (Listener) Java Basics - Anfänger-Themen 6
H Key Listener macht nicht das was er soll Java Basics - Anfänger-Themen 4
T Wartet Klasse auf Listener? Java Basics - Anfänger-Themen 3
D Listener? Java Basics - Anfänger-Themen 2
S Listener auf JTextfeld Java Basics - Anfänger-Themen 8
B Kommunikation zwischen Klasse und Listener Java Basics - Anfänger-Themen 2
C Benutzereingaben vor Listener abfangen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben