Λειτουργίες προσαρμογής για ιδιότητες Java bean

Μια λειτουργία προσαρμογής είναι ένα πρόσθετο πλαίσιο διαλόγου, η εκκίνηση του οποίου γίνεται από τους χρήστες, με σκοπό την αλλαγή των ιδιοτήτων Java bean. Μπορείτε να δημιουργήσετε κλάσεις προσαρμογής για την τροποποίηση των ιδιοτήτων Java beans που προσθέτετε στη λειτουργία επεξεργασίας γραφικού περιβάλλοντος.

Μια κλάση προσαρμογής θα πρέπει να υλοποιεί τη διεπαφή java.beans.Customizer και θα πρέπει επίσης να αποτελεί υποκλάση της java.awt.Component. Συνήθως, η κλάση προσαρμογής αποτελεί μια θέση υποδοχής, όπως είναι η java.awt.Panel ή javax.swing.JPanel που περιέχει τα στοιχεία ελέγχου που σας επιτρέπουν να προβάλλετε και να χειρίζεστε τις δικές σας ιδιότητες Java bean. Όταν γίνεται η εκκίνηση της λειτουργίας προσαρμογής από το κουμπί της γραμμής εργαλείων, αυτή τοποθετείται μέσα στο πλαίσιο διαλόγου που έχει κουμπιά OK και Ακύρωση.

Όταν ένας χρήστης ανοίγει μια λειτουργία προσαρμογής, η λειτουργία αυτή παρέχει το Java bean, το οποίο προσαρμόζει, ως τμήμα της μεθόδου public void setObject(Object bean);. Η λειτουργία προσαρμογής έχει τότε τη δυνατότητα να πραγματοποιεί απευθείας αλλαγές στο όρισμα.

Η διεπαφή java.beans.Customizer διαθέτει επίσης τις μεθόδους public void addPropertyChangeListener(PropertyChangeListener listener); και public void removePropertyChangeListener(PropertyChangeListener listener). Η λειτουργία επεξεργασίας γραφικού περιβάλλοντος θα προστεθεί ως λειτουργία ακρόασης στη λειτουργία προσαρμογής και αν η αυτή προορίζεται για την ανανέωση της εμφάνισης του Java bean στην προβολή σχεδίασης, τότε θα σηματοδοτεί μια αλλαγή ιδιοτήτων καλώντας τις λειτουργίες ακρόασής που διαθέτει, με οποιαδήποτε από τις μεθόδους firePropertyChange(... για οποιοδήποτε σύνολο ορισμάτων.

Όταν ο χρήστης πατάει OK, η λειτουργία επεξεργασίας γραφικού περιβάλλοντος θα προσπαθεί να προσδιορίσει τις αλλαγές που πραγματοποιήθηκαν στο Java bean, έτσι ώστε να μπορεί να ενημερώνει τον πρωτογενή κώδικα Java. Για τον σκοπό αυτό, η λειτουργία επεξεργασίας γραφικού περιβάλλοντος λαμβάνει ένα αντίγραφο όλων των ιδιοτήτων Java bean, πριν την εκκίνηση της λειτουργίας προσαρμογής και στη συνέχεια συγκρίνει τα αντίγραφα αυτά με τις ιδιότητες που εμφανίζονται μετά το κλείσιμο της λειτουργίας προσαρμογής. Εάν κάποια ιδιότητα είναι διαφορετική (η μέθοδος equals επιστρέφει την τιμή false), τότε προσδιορίζεται ότι έχει πραγματοποιηθεί αλλαγή. Για τον προσδιορισμό του ορίσματος στη μέθοδο ορισμού της ιδιότητας αυτής, δημιουργείται η λειτουργία επεξεργασίας ιδιοτήτων στην κλάση java.beans.PropertyDescriptor. Στη συνέχεια, καλείται μαζί με τις μεθόδους public void setValue(Object) και public String getJavaInitializationString();. Ομοίως, όταν ο χρήστης πατάει Ακύρωση, επειδή η λειτουργία προσαρμογής έχει ήδη αλλάξει το Java bean, η λειτουργία επεξεργασίας γραφικού περιβάλλοντος υποβάλλει ερωτήματα για το σύνολο των ιδιοτήτων και επαναφέρει τις ιδιότητες που άλλαξαν στην αρχική τους κατάσταση.

Εάν η λειτουργία προσαρμογής είναι ένα κέλυφος ανωτέρου επιπέδου το οποίο δεν χρειάζεται πλαίσιο διαλόγου για να εκτελεστεί, όπως είναι το java.awt.Frame ή το javax.swing.JFrame, η λειτουργία επεξεργασίας γραφικού περιβάλλοντος θα εκτελεί τη λειτουργία προσαρμογής ως έχει. Καθώς το είδος αυτό της λειτουργίας προσαρμογής είναι υπεύθυνο για το δικό του σύνολο κουμπιών και η λειτουργία επεξεργασίας γραφικού περιβάλλοντος δεν έχει τρόπο να γνωρίζει εάν πραγματοποιήθηκε ακύρωση ή επιβεβαίωση, κάθε φορά που κλείνει η λειτουργία προσαρμογής, υποβάλλονται ερωτήματα για τις ανωτέρου επιπέδου ιδιότητες ώστε να διαπιστώνεται εάν έχουν αλλάξει. Έτσι, εάν η λειτουργία προσαρμογής εκτελέσει μια ακύρωση, τότε πρέπει να το κάνει ώστε να διασφαλίσει ότι οι ιδιότητες Java bean επανήλθαν στην αρχική τους κατάσταση.

Αφού δημιουργήσετε μια λειτουργία προσαρμογής, θα πρέπει να την ορίσετε στο αρχείο περιγραφής του bean για την κλάση BeanInfo για το Java bean:

public class MyClassBeanInfo extends SimpleBeanInfo {
    public BeanDescriptor getBeanDescriptor() {
        return new BeanDescriptor(MyClass.class,
MyCustomizer.class);

(C) Copyright IBM Corporation 1999, 2004. Με την επιφύλαξη παντός δικαιώματος.