Et tilpasningsprogram er en supplerende dialogboks, som brugeren kan starte for at ændre egenskaber for Java-bean'en. Du kan oprette tilpassede klasser til redigering af egenskaber for Java-beans, som du føjer til den visuelle editor.
En tilpasningsklasse bør implementere java.beans.Customizer-grænsefladen og bør også være en underklasse til java.awt.Component. Som regel er en tilpasningsfunktion et opbevaringssted, f.eks. java.awt.Panel eller javax.swing.JPanel, som indeholder de kontrolelementer, du kan bruge til at vise og arbejde med Java-bean'ens egenskaber. Når tilpasningsfunktionen startes vha. værktøjslinjeknappen, udføres den i en dialogboks, som indeholder knapperne OK og Annullér.
Når en bruger åbner en tilpasningsfunktion, modtager tilpasningsfunktionen den Java-bean, den tilpasser, som en del af metoden public void setObject(Object bean);. Tilpasningsfunktionen kan derefter foretage ændringerne direkte til argumentet.
Grænsefladen java.beans.Customizer har også metoderne public void addPropertyChangeListener(PropertyChangeListener listener); og public void removePropertyChangeListener(PropertyChangeListener listener). Den visuelle editor føjer en lytter til sig selv på tilpasningsfunktionen, og hvis tilpasningsfunktionen skal opfriske Java-bean'ens udseende i oversigten Design, skal den signalere en egenskabsændring ved at kalde dens lytter med en af metoderne firePropertyChange(... med et vilkårligt sæt argumenter.
Når brugeren klikker på OK, prøver den visuelle editor at bestemme, hvilke ændringer tilpasningsfunktionen har foretaget til Java-bean'en, så den kan opdatere Java-kildekoden. For at kunne gøre dette opretter den visuelle editor en kopi af alle Java bean'ens egenskaber, inden tilpasningsfunktionen startes, og sammenligner dem med egenskaberne, når tilpasningsfunktionen lukkes. Hvis en egenskab er forskellig (returnerer false til metoden equals), bestemmes det, at den er ændret. For at bestemme argumentet for set-metoden for egenskaben oprettes egenskabseditoren på java.beans.PropertyDescriptor. Derefter kaldes den med public void setValue(Object) og public String getJavaInitializationString();. Når du klikker på Annullér, fordi tilpasningsfunktionen allerede har ændret Java-bean'en, forespørger den visuelle editor på egenskabssættet og nulstiller dem, der er forskellige fra deres oprindelige tilstand.
Hvis tilpasningsfunktionen er en shell på øverste niveau, som ikke kræver udførelse af en dialogboks, f.eks. java.awt.Frame eller javax.swing.JFrame, udfører den visuelle editor tilpasningsfunktionen, som den er. Da denne type tilpasningsfunktion er ansvarlig for sin egen sæt knapper, og den visuelle editor har ikke kendskab til, hvad der er annulleret eller accepteret, når tilpasningsfunktionen lukkes, forespørges på egenskaberne på øverste niveau for at se, om de er ændret. Hvis tilpasningsfunktionen foretager en annullering, skal den sikre, at Java-bean'ens egenskaber får deres oprindelige tilstand.
Når du har skrevet en tilpasningsfunktion, skal den angives på beandeskriptoren for BeanInfo-klassen for Java-bean'en:
public class MyClassBeanInfo extends SimpleBeanInfo { public BeanDescriptor getBeanDescriptor() { return new BeanDescriptor(MyClass.class, MyCustomizer.class); } }