Java komponensek tulajdonságainak személyre szabása

A személyre szabó párbeszédablakok segítségével a felhasználók megváltoztathatják a Java komponensek tulajdonságait. A vizuális szerkesztőhöz hozzáadott Java komponensek tulajdonságainak beállításához különleges személyre szabó osztályokat hozhat létre.

A személyre szabó osztálynak a java.beans.Customizer felületetet kell megvalósítania, és a java.awt.Component osztályból kell származnia. A személyre szabó osztály általában egy tároló (például java.awt.Panel vagy javax.swing.JPanel), amely tartalmazza a Java komponens tulajdonságainak megjelenítéséhez és módosításához szükséges vezérlőelemeket. Amikor a személyre szabó osztályt az eszköztár egyik ikonja aktivizálja, akkor egy OK és Mégse gombokkal ellátott párbeszédablakba ágyazva jelenik meg.

Mikor a felhasználó megnyitja a személyre szabó párbeszédablakot, az a public void setObject(Object bean); hívással megkapja a Java komponenst. Ezután a személyre szabó osztály képes közvetlenül módosítani az argumentumot.

A java.beans.Customizer felület ezenkívül a public void addPropertyChangeListener(PropertyChangeListener listener); és public void removePropertyChangeListener(PropertyChangeListener listener) metódusokat is biztosítja. A vizuális szerkesztő saját magát állítja be figyelőként, és ha a személyre szabó osztály frissíteni szeretné a Java komponens kinézetét a Terv nézetben, akkor jeleznie kell a tulajdonságváltozást a firePropertyChange(... metódusok egyikével.

Amikor a felhasználó rákattint az OK gombra, a vizuális szerkesztő megkísérli megállapítani, hogy milyen módosításokat kell végrehajtani a forráskódon. Ehhez ismernie kell, hogy a személyre szabó osztály milyen változtatásokat hajtott végre a Java komponensen. Ennek kiderítéséhez a vizuális szerkesztő a személyre szabó osztály aktivizálása előtt a Java komponens összes tulajdonságát elmenti, majd ezt összehasonlítja a párbeszédablak bezárása utáni értékekkel. Ha egy tulajdonság értéke eltérő (az 'egyenlő' metódus hamis értéket ad vissza), akkor a vizuális szerkesztő megváltozottnak tekinti. A tulajdonsághoz tartozó beállító metódus argumentumának meghatározásához létrejön a java.beans.PropertyDescriptor tulajdonságszerkesztője. Ezután ez meghívásra kerül a public void setValue(Object) és public String getJavaInitializationString(); metódusokkal. Ehhez hasonlóan ha a felhasználó a Mégse gombra kattint, mert a személyre szabó már módosította a Java komponenst, akkor a vizuális szerkesztő lekérdezi a tulajdonságokat, és visszaállítja azokat, amelyek az eredeti értéküktől eltérnek.

Ha a személyre szabó egy felső szintű héj, amelynek nincs szüksége beágyazó párbeszédablakra a futáshoz (például egy java.awt.Frame vagy javax.swing.JFrame), akkor a vizuális szerkesztő önmagában futtatja. Mivel az ilyen típusú keret vezérlőelemei a saját hatáskörébe tartoznak, és a vizuális szerkesztőnek nem áll módjában megállapítani, hogy bezáráskor a felhasználó elfogadta vagy visszavonta a változtatásokat, ezért mindenképpen lekérdezi a felső szintű tulajdonságokat, és ellenőrzi azok esetleges változásait. Emiatt a személyre szabó osztálynak saját magának kell elvégeznie a változtatások visszavonását és a Java komponens eredeti állapotba visszaállítását, ha a felhasználó ezt a műveletet választja.

A személyre szabó megírása után be kell állítani, hogy ez az osztály legyen a Java komponenshez tartozó BeanInfo osztály komponensleírója:

public class MyClassBeanInfo extends SimpleBeanInfo {
    public BeanDescriptor getBeanDescriptor() {
        return new BeanDescriptor(SajatOsztaly.class,
SajatSzemelyreSzabo.class);
    }
}

(C) Copyright IBM Corporation 1999, 2004. Minden jog fenntartva.