Πως κανω update σε ενα JFrame και στα περιεχομενα του;

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
nocturna_gr
byte level
byte level
Posts: 122
Joined: Tue Sep 27, 2005 2:20 pm

Πως κανω update σε ενα JFrame και στα περιεχομενα του;

Post by nocturna_gr » Sun Mar 19, 2006 7:25 pm

Γεια,
Εχω "class A extends JFrame", "class B extends JPanel" & "class C extends JPanel". Tα αντικειμενα των ταξεων Β και C εχουν προστεθει πανω σε ενα αντικειμενο του Α. Υπαρχει καποια μεθοδος διεπαφης/ταξης Listener, τετοια ωστε οταν γινεται οποια αλλαγη στο Β ή C, να την καταλαβαινει ο Α;
User avatar
Tomahawk
Mbyte level
Mbyte level
Posts: 536
Joined: Tue May 18, 2004 1:50 pm

Post by Tomahawk » Sun Mar 19, 2006 11:56 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
User avatar
nocturna_gr
byte level
byte level
Posts: 122
Joined: Tue Sep 27, 2005 2:20 pm

Post by nocturna_gr » Mon Mar 20, 2006 10:33 am

Tomahawk wrote: Αν το παρεκανα με την αναλυση sorry :P:P
Μια χαρα τα πες! Ευχαριστω. Δεν εχω δοκιμασει τη λυση, αλλα εχω κολλησει εδω και μερες και ο,τι νεο ειναι αποδεκτο. Προς το παρον κανω λιγο διαβασμα σχετικα με observers...
User avatar
Tomahawk
Mbyte level
Mbyte level
Posts: 536
Joined: Tue May 18, 2004 1:50 pm

Post by Tomahawk » Fri Mar 24, 2006 5:07 pm

Ξεχασα να πω οτι οι απαραιτητες κλασεις ειναι στο πακετο java.util και λεγονται Observable (Publisher) και Observer (Subscriber).Η κλαση Observable γινεται extend απο το αντικειμενο που θελουν να παρακολουθουν οι ενδιαφερομενοι και το interface Observer γινεται implement απο τα αντικειμενα που θελουν να παρακολουθουν καποιον τυπου Observable.
Post Reply

Return to “Προγραμματισμός”