![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 02.11.2005
Beiträge: 9
|
Hallo, ich habe eine Frage bezüglich Listeners. Ich habe ein Objekt der Klasse Persons, das eine Liste von Person-Objekten enthält. Diese Klasse dient als Model. Nun stelle ich über verschiedenen JTables (oder andere Views) entweder die ganze Liste der Person-Objekte, nur ein paar ausgewählte oder nur ein einziges Objekt der Liste dar. (Also pro Person-Attribute, Name, Alter, etc. wird eine Spalte angezeigt) Die Zuordnung Zeile <-> Objekt bilde ich bei der JTable mit einer ArrayList. Wobei der Index die Zeile angibt und als Wert eine Referenz auf ein Person-Objekt der Liste gespeichert ist. Mit z.B. setValue kann ich ja nun die Attribute eines Person-Objekts ändern. Da ich eine Referenz verwende, ändert sich ja das Person-Objekt der Liste und alle 'JTable-Views' haben Zugriff auf die Änderung, aber wie benachrichtige ich die Views davon, dass sich ein Objekt geändert hat und sie es neu aus dem Model lesen müssen. Muss ich da jede JTable (View) als Listener bei jedem Person-Objekt anmelden. Oder muss ich das Persons-Objekt, also das Model, das die Personenliste enthält als Listener für alle Person-Objekte anmelden und die Views melden sich nur bei dem Persons-Objekt als Listener an. Oder macht man das vollkommen anders. Weiß jemand wie so etwas gelöst wird? |
| | |
| | Nach oben #2 |
| Benutzer Registriert seit: 13.08.2005
Beiträge: 67
|
Da Du noch nichts gegenteiliges geschrieben hast gehe ich davon aus dass DU das Problem noch hast. Bin gerade über deinen Beitrag gestolpert! Ich gehe davon aus dass Du das ganze gerne per MVC gelöst haben willst. Objekt 1 ist dein Personen Objekt in der Liste; (extends Observable) Objekt 2,3 und 4 sind deine Views. (implements Observer) Du musst jetzt die Views dem Objekt 1 bekannt machen. object1.addObserver(object2); object1.addObserver(object3); object1.addObserver(object4); in der Setter von Objekt 1 nimmst Du zuerst die Änderungen vor und dann rufts Du folgenden Code auf: setChanged(); notifyObservers(); in den Views implementierst Du entsprechend in der Update Methode die Funktionalität zum Anzeigen der Daten. Was Du jetzt aber noch realisieren musst ist dass wenn Du ein anderes Objekt in deinen Masken (Listen,....) beobachtest dass Du die Observer Referenzen bei dem nicht mehr beobachteten Objekt entfernst. Wenn Du später mit einem Observer Objekt mehrere Observable Objekte beobachtest dann kannst Du zur Unterscheidung ein beliebiges Objet zur notifyObservers Funktion mitgeben. Das sollte DIr mal einen Anfagn bieten. Wenn Du noch Fragen hast postie diese einfach hier. |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Listener für JMenu bzw. JMenuItem | Ben | Desktop-Applikationen und Grafik | 10 | 27.09.2005 21:39 |