Μπορείτε να προσθέσετε ένα συμβάν σε ένα συστατικό στοιχείο στην προβολή σχεδίασης ή την προβολή Java Beans της λειτουργίας επεξεργασίας γραφικού περιβάλλοντος για Java.
Κατά την προσθήκη ενός συμβάντος, εάν υπάρχει λειτουργία ακρόασης που μπορεί να χρησιμοποιηθεί, τότε η μέθοδος επανάκλησης προστίθεται σε αυτή. Διαφορετικά, δημιουργείται μια νέα λειτουργία ακρόασης. Για τη χρήση υπάρχουσας λειτουργίας ακρόασης, πρέπει να υπάρχει μια ανώνυμη εσωτερική κλάση στη JavaBean που να υλοποιεί τη διεπαφή της λειτουργίας ακρόασης. Πρέπει να έχει κενό σώμα μεθόδου για τη μέθοδο επανάκλησης ή να επεκτείνει την κλάση προσαρμογέα και να μην έχει υπάρχουσα μέθοδο για την επανάκληση συμβάντος που προστίθεται. Για μια ιδιότητα, μια υπάρχουσα PropertyChangeListener θα χρησιμοποιηθεί εκ νέου εάν προστεθεί στο JavaBean με τη μέθοδο μονού ορίσματος addPropertyChange(PropertyChangeListener listener). Εάν δεν έχει ήδη κώδικα, προστίθεται η επεξεργασία της ιδιότητας.
Εάν δεν υπάρχει υποψήφια λειτουργία ακρόασης στην οποία να μπορεί να προστεθεί η μέθοδος επανάκλησης, τότε δημιουργείται μια νέα λειτουργία ακρόασης. Πρόκειται για μια ανώνυμη εσωτερική κλάση, και εάν έχει προσδιοριστεί κλάση προσαρμογέα για το συμβάν, τότε η λειτουργία ακρόασης θα την επεκτείνει. Διαφορετικά, θα υλοποιήσει τη διεπαφή της λειτουργίας ακρόασης. Μετά την προσθήκη του συμβάντος, δημιουργείται μια μέθοδος στελέχους με σχόλιο //TODO. Η μέθοδος στελέχους είναι μια ένδειξη του πρωτογενούς κώδικα που θα εκτελεστεί εάν επέλθει το συμβάν και πρέπει τότε να την αλλάξετε για την πραγματοποίηση της απαιτούμενης συμπεριφοράς. Το σχόλιο //TODO εμφανίζεται στο παράθυρο "Εργασίες", με επισήμανση μη ολοκληρωμένων μεθόδων. Αυτό συμβαίνει ώστε να μπορείτε να τις εντοπίσετε αργότερα και να αφαιρέσετε τπ σχόλιο //TODO μόλις εγγραφεί η λογική επανάκλησης.
Στο προηγούμενο παράδειγμα, η μέθοδος windowOpened ήδη υπάρχει. Εάν πρόκειται για λειτουργία ακρόασης που επεκτείνει τον προσαρμογέα, η ίδια λειτουργία ακρόασης θα χρησιμοποιηθεί εκ νέου διότι δεν έχει ήδη μια μέθοδο windowClosed. Προστίθεται η μέθοδος windowClosed(WindowEvent e) και εμφανίζονται εδώ το στέλεχος μεθόδου μαζί με το σχόλιο //TODO που προστέθηκαν:
this.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosed(java.awt.event.WindowEvent e) { System.out.println("windowClosed()"); // TODO Auto-generated stub windowClosed() } public void windowOpened(java.awt.event.WindowEvent e) { callExistingWindowOpenedLogic(); } });
Στην εξειδικευμένη κατάσταση λειτουργίας, συμβάντα μπορούν επίσης να προστεθούν στο JavaBean όπως παρουσιάστηκε προηγουμένως, αλλά και σε μια λειτουργία ακρόασης στη διακλάδωση Java Beans. Το μενού "Συμβάντα" εμφανίζει όλες τις μεθόδους επανάκλησης συμβάντων σε μια λειτουργία ακρόασης και οποιαδήποτε είναι ήδη σε χρήση απενεργοποιείται.
Για μια PropertyChangeListener το αναδυόμενο μενού εμφανίζει όλες τις ιδιότητες ορίων στο JavaBean. Εάν ήδη χρησιμοποιούνται κάποιες από τη PropertyChangeListener, τότε απενεργοποιούνται.
Μια λειτουργία ακρόασης που προστέθηκε με μέθοδο μονού ορίσματος έχει μια πρόταση if που ελέγχει το όνομα της ιδιότητας πριν την επεξεργασία της λογικής κάθε επανάκλησης ιδιότητας όπως φαίνεται στον ακόλουθο κώδικα:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent e) { if ((e.getPropertyName().equals("font"))) { System.out.println("propertyChange(font)"); } } });
Αυτό επιτρέπει τη χρήση μιας PropertyChangeListener που προστέθηκε με μια μέθοδο μονού ορίσματος για περισσότερες από μία ιδιότητες (έχοντας σε χρήση πολλαπλές ενότητες if{}), και όταν προστεθεί η δεύτερη και η επόμενη επανάκληση μεθόδου, προστίθενται επίσης νέες ενότητες if{}.
Εάν η propertyChangeListener προστεθεί στο JavaBean με χρήση μεθόδου δύο ορισμάτων addPropertyChangeListener(String propertyName, PropertyChangeListener listener) τότε είναι ειδικά για ένα συγκεκριμένο είδος περιεχομένου. Στην περίπτωση αυτή απενεργοποιούνται όλα τα θυγατρικά στοιχεία του επικαλυπτόμενου μενού "Συμβάντα".