Portal > Foren > Java > Allgemeine Java-Programmierung > Observer und Reihenfolge
Antwort
 
Themen-Optionen
Alt 23.11.2005, 21:59 Nach oben    #1
Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 67
Standard Observer und Reihenfolge

Hi,

Ich müßte auf die Reihenfolge der NotifyObserver Klasse einfluß nehmen.
In der API steht nur knapp nicht dokumentiert.

Kennt sich da jemand aus?

Ich müsste zur Laufzeit Observer zufügen die aber bei Änderungen vor einer Klasse aufgerufen werden die zu Programmstart gleich angefügt wird.
Robinson ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 09:13 Nach oben    #2
Benutzer
 
Registriert seit: 15.11.2005
Beiträge: 75
Standard

Aus der Observable-Dokumentation:
" The order in which notifications will be delivered is unspecified. The default implementation provided in the Observable class will notify Observers in the order in which they registered interest, but subclasses may change this order, use no guaranteed order, deliver notifications on separate threads, or may guarantee that their subclass follows this order, as they choose."

Man kann also beim Registrieren eines Observers nicht erzwingen, dass dieser vor oder nach einem anderen Observer getriggert wird.

Hast Du eine Referenz auf den beim Programmstart registrierten Observer? Wenn das so ist, dann kannst Du ihn mit deleteObserver deregistrieren. Wenn Du Dich - entgegen der Empfehlung aus der Doku - darauf verlässt, dass Du es mit einer Default-Implementierung von Observable zu tun hast, dann kannst Du den alten Observer entfernen, dann Deinen neuen einhängen und dann den alten wieder hinzufügen.
Besser wäre es aber, sich nicht auf die Reihenfolge zu verlassen, sondern den alten Observer zu entfernen, ihn dem neuen Observer als Parameter mitzugeben und dann am Ende der update-Methode des neuen Observers einfach direkt update() des alten mitzugeben.
Murray ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 09:20 Nach oben    #3
Sky
Neuer Benutzer
 
Registriert seit: 22.11.2005
Beiträge: 8
Standard

Warum soll denn eine Reihenfolge festgelegt sein? Das hat nix mit Observer o.ä. zu tun! Es geht hierbei nur um die Verteilung der Information, dass es eine Änderung gibt. Jede Klasse muss/kann individuell darauf reagieren... unabhängig davon, ob man als 1. oder als 10. die Info bekommen hat!
Sky ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 09:23 Nach oben    #4
Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 67
Standard

Wenn ich aber in der ersten Klasse die reagiert ein Fenster Modal öffne dann wird der Programmablauf unterbrochen und erst weitergeführt wenn das modale Fenster weider geschlossen wird.

Also wird die zweite Klasse erst danach informiert.

Ich möchte aber dass die Zweite Klasse im Popup dargestellt wird
Also sollte diese ebenfals reagieren und erst dann das Popup geöffnet werden.

Leider kennen sich die beiden Klassen nicht.
Deshalb wäre die Reihenfolge wichtig.
Robinson ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.11.2005, 09:37 Nach oben    #5
Sky
Neuer Benutzer
 
Registriert seit: 22.11.2005
Beiträge: 8
Standard

Nochmal ganz langsam: 2 Klassen sind vorhanden: Ein modaler Dialog und eine zweite. Der modale Dialog stellt die zweite Klasse dar. Hab ich das richtig verstanden ?
Sky ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.12.2005, 19:38 Nach oben    #6
Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 67
Standard

Da bin ich wieder.

Danke für die Hilfe!

Ich habe einen Hauptframe in dem die verschiedenen Komponenten meiner Software angeordnet werden.
Dieser Übernimmt das Anzeigen der richtigen Komponenten sowie die Steuerung welche Elemente Enabled oder Disabled sind.

In manchen Fällen habe ich auf dieser Komponente eine JTable plaziert.

Wenn ich jetzt einen neuen Datensatz hinzufügen will dann wird ein Popup geöffnet (Singleton Pattern) und eine Maske (abhängig davon welche Tabelle gerade bearbeitet wird) eingebunden.

Mein Problem: Wegen der Programmstruktur ist der Ansichtskontroller der erste der als Observer registriert wird.

Zu einem Späteren Zeitpunkt werden die Controller der verschiedenen Datensätze registriert.

Möchte ich nun einen Datensatz bearbeitenso löse ich ein entsprechendes Event aus wodurch alle Observer der Reihe nach informiert sind.

Um ein Modales Popup anzuzeigen setze ich dieses im Ansichtskontroller auf setVisible(true). Hierdurch wird der Programmablauf unterbrochen bis das Modale fenster wieder geschlossen wird.

Erst danach werden die weiteren Observer informiert, unter Anderem auch der welcher für das Laden der Daten aus der Datenbank zuständig ist.

Ich habe das Ganze jetzt so gelöst dass ich die Observer zwei mal informiere.
Einmal darüber das ein neuer Datensatz eingetragen werden soll und ein zweites mal darüber dass die Masken jetzt angezeigt werden sollen.

Wäre es möglich die Reihenfolge der Observer zu steuern so könnte man dies sauberer lösen.
Robinson ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Textfelder auf verschiedenen Tabs per Observer synchronisieren Sayang Desktop-Applikationen und Grafik 2 05.12.2005 19:14
Observer Problem, oder: Java und Eclipse wollen mich verar...! Robinson Eclipse 6 24.11.2005 09:20
JInternalFrame und Canvas bezüglich Reihenfolge Hot-Thunder Desktop-Applikationen und Grafik 10 06.07.2005 20:56


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:18 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44