findEditorは、先に見たように、クラス名+"Editor"という名前のクラスを探すのです が、BeanInfoを使うと、任意の名前のクラスをエディタとしてbeanに設定できます。 基本は、プロパティ・ディスクリプタが、そのプロパティのエディタについての情報を 持つということです。次の例では、setPropertyEditorClassというメソッドで、 MoleculeクラスのmoleculeNameという名前のプロパティに、MoleculeNameEditorという エディタ・クラスを設定しています。
この例は、また、getPropertyDescriptorsメソッドが返す配列が、このプロパティ しか含んでいませんので、一つのプロパティしか編集可能でないbeanの例ともなって います。
public class MoleculeBeanInfo extends SimpleBeanInfo { public PropertyDescriptor[] getPropertyDescriptors() { try { PropertyDescriptor pd = new PropertyDescriptor("moleculeName", Molecule.class); pd.setPropertyEditorClass(MoleculeNameEditor.class); PropertyDescriptor result[] = { pd }; return result; } catch (Exception ex) { System.err.println("MoleculeBeanInfo: unexpected exeption: " + ex); return null; } } }
MoleculeNameEditorの中身は、PropertyEditorSupportクラスを継承して、 そのgetTagsメソッドを置き換えただけのものですl。
public class MoleculeNameEditor extends java.beans.PropertyEditorSupport { public String[] getTags() { String result[] = { "HyaluronicAcid", "benzene", "buckminsterfullerine", "cyclohexane", "ethane", "water"}; return result; } }