Γεια,
Εχω "class A extends JFrame", "class B extends JPanel" & "class C extends JPanel". Tα αντικειμενα των ταξεων Β και C εχουν προστεθει πανω σε ενα αντικειμενο του Α. Υπαρχει καποια μεθοδος διεπαφης/ταξης Listener, τετοια ωστε οταν γινεται οποια αλλαγη στο Β ή C, να την καταλαβαινει ο Α;
Πως κανω update σε ενα JFrame και στα περιεχομενα του;
- nocturna_gr
- byte level
- Posts: 122
- Joined: Tue Sep 27, 2005 2:20 pm
Μια καλη λυση ειναι να κανεις τις κλασεις Β και C να κανουν extend το Observable interface και η κλαση Α το interface Observer.Οταν φορτωνει η κλαση Α κανει register στις κλασεις που θελει να παρακολουθει για αλλαγες (Β και C) με την κληση addObserver(this).Οταν οι observable κλασεις (στην περιπτωση σου B and C) αντιληφθουν οτι τους συνεβει κατι για το οποιο θελουν να ενημερωσουν ολους οσους τους "παρακολουθουν" (στην περιπτωση σου την Α) καλουν την μεθοδο notifyObservers(Object).Αθτο θα εχει σαν αποτελεσμα να καλεστει η μεθοδος update(Object) ολων των observers (που αναγκαστηκα θα πρεπει να υλοποιησει η Α κλαση σου εφοσον θελει να κανει implement το interface Observer).Σε αυτη λοιπον τη μεθοδο update θα κανεις οτι θελεις η κλαση Α να κανει.
Note : αν σκεφτηκες να περνας το frame (A) αντικειμενο στον κατασκευαστη των Β και C ,που ειναι λαθος σχεδιασμος,τοτε η παραπανω λυση ειναι αυτη που ενδυκνειται.
Περισσοτερα εδω : http://www.exciton.cs.rice.edu/JavaReso ... rvable.htm
Θα μπορουσες να το κανεις και με events ελεγχοντας στο frame απο ποιον προηλθαν και αν ειναι 1)αυτα που θες και 2) απο τα components που θες τοτε να κανεις τη δουλεια που πρεπει.Αλλα και αυτη η λυση νομιζω ειναι ειναι χειροτερη απο την παραπανω.Η λυση των Observables ειναι απολυτα συμβατη με το Listeners μοντελο του swing.
Αν το παρεκανα με την αναλυση sorry :P:P
Note : αν σκεφτηκες να περνας το frame (A) αντικειμενο στον κατασκευαστη των Β και C ,που ειναι λαθος σχεδιασμος,τοτε η παραπανω λυση ειναι αυτη που ενδυκνειται.
Περισσοτερα εδω : http://www.exciton.cs.rice.edu/JavaReso ... rvable.htm
Θα μπορουσες να το κανεις και με events ελεγχοντας στο frame απο ποιον προηλθαν και αν ειναι 1)αυτα που θες και 2) απο τα components που θες τοτε να κανεις τη δουλεια που πρεπει.Αλλα και αυτη η λυση νομιζω ειναι ειναι χειροτερη απο την παραπανω.Η λυση των Observables ειναι απολυτα συμβατη με το Listeners μοντελο του swing.
Αν το παρεκανα με την αναλυση sorry :P:P
- nocturna_gr
- byte level
- Posts: 122
- Joined: Tue Sep 27, 2005 2:20 pm
Ξεχασα να πω οτι οι απαραιτητες κλασεις ειναι στο πακετο java.util και λεγονται Observable (Publisher) και Observer (Subscriber).Η κλαση Observable γινεται extend απο το αντικειμενο που θελουν να παρακολουθουν οι ενδιαφερομενοι και το interface Observer γινεται implement απο τα αντικειμενα που θελουν να παρακολουθουν καποιον τυπου Observable.