Mukautusohjelma on lisäikkuna, jonka käyttäjät voivat käynnistää Java-bean-komponenttien ominaisuusmuutoksien tekemistä varten. Voit luoda mukautusohjelman luokkia, joita voi käyttää graafiseen muokkausohjelmaan lisättävien Java-bean-komponenttien ominaisuuksien muokkaukseen.
Mukautusohjelman luokan tulee toteuttaa rajapinta java.beans.Customizer ja sen tulee olla myös metodin java.awt.Component aliluokka. Yleensä mukautusohjelma on säilö, kuten java.awt.Panel tai javax.swing.JPanel. Ne sisältävät ohjausobjektit, joiden avulla voit tarkastella ja käsitellä Java-bean-komponentin ominaisuuksia. Kun mukautusohjelma käynnistetään työkalurivin painikkeella, se asetetaan valintaikkunaan, jossa on OK- ja Peruuta-painikkeet.
Kun käyttäjä avaa mukautusohjelman, sille annetaan Java-bean-komponentti, jota se mukauttaa osana metodia public void setObject(Object bean);. Mukautusohjelma voi sitten tehdä muutokset suoraan argumenttiin.
Rajapinnalla java.beans.Customizer on myös metodit public void addPropertyChangeListener(PropertyChangeListener listener); ja public void removePropertyChangeListener(PropertyChangeListener listener). Graafinen muokkausohjelma lisää itsensä mukautusohjelmaan kuuntelutoimintona, ja jos mukautusohjelma päivittää Java-bean-komponentin ulkoasun suunnittelunäkymässä, sen tulisi antaa merkki ominaisuuden muutoksesta kutsumalla sen kuuntelutoimintoja jollakin firePropertyChange(... -metodilla ja millä tahansa argumenttijoukolla.
Kun käyttäjä napsauttaa OK-painiketta, graafinen muokkausohjelma yrittää määrittää, mitä muutoksia mukautusohjelma on tehnyt Java-bean-komponenttiin, jotta se voi päivittää Java-lähdekoodin. Tämä edellyttää, että graafinen muokkausohjelma kopioi kaikki Java-bean-komponentin ominaisuudet ennen mukautusohjelman käynnistystä ja vertaa niitä ominaisuuksiin sitten, kun mukautusohjelma on suljettu. Jos jokin ominaisuus on erilainen (palauttaa epätoden arvon equals-metodissa), se määritetään muuttuneeksi. Ominaisuuden määritysmetodin argumentin määrittämiseksi metodille java.beans.PropertyDescriptor luodaan ominaisuuden muokkausohjelma. Sitä kutsutaan sitten metodeilla public void setValue(Object) ja public String getJavaInitializationString();. Samoin jos napsautat Peruuta-painiketta, koska mukautusohjelma on jo muuttanut Java-bean-komponenttia, graafinen muokkausohjelma esittää kyselyjä ominaisuusjoukolle ja palauttaa kaikki poikkeavat ominaisuudet alkuperäiseen tilaan.
Jos mukautusohjelma on ylimmän tason komentorivi, jota ei tarvitse ajaa valintaikkunassa, kuten java.awt.Frame tai javax.swing.JFrame, graafinen muokkausohjelma ajaa mukautusohjelman sellaisenaan. Koska tällainen mukautusohjelma on vastuussa omista painikkeistaan ja koska graafinen muokkausohjelma ei voi mitenkään tietää, onko se peruutettu vai vahvistettu, ylimmän tason ominaisuuksiin mahdollisesti tehdyt muutokset tarkistetaan aina, kun mukautusohjelma suljetaan. Täten jos mukautusohjelma toteuttaa peruutuksen, sen on pakko toimia niin, mikä takaa, että Java-bean-komponentin ominaisuudet palautetaan alkuperäiseen tilaansa.
Kun olet kirjoittanut mukautusohjelman, se on määritettävä Java-bean-komponentin BeanInfo-luokan bean-komponentin kuvaajassa:
public class MyClassBeanInfo extends SimpleBeanInfo { public BeanDescriptor getBeanDescriptor() { return new BeanDescriptor(MyClass.class, MyCustomizer.class); } }