BeanInfo のクラスは名前のとおり Beanに関する情報を管理するためのクラスです。
具体的には Bean自身、
あるいはBeanのプロパティ、メソッド、イベント、の情報を管理する
BeanDescriptor, PropetryDescriptor,MethodDescriptor,EventDescriptor
などのオブジェクトを提供します。
その他、開発ツールが使用するアイコンの情報なども提供します。
BeanInfo のクラスは必須のクラスというわけではありません。
Bean が Java Beansの規約に 100%従ってプロパティやイベントを定義している
のであれば、BeanInfoの情報は不要です。
ただし、何らかの事情で命名規則からはずれたような場合には、
BeanInfoのクラスに記述をする必要が生じます。
またプロパティエディタやカスタマイザを新たに設計した場合には、
BeanInfoのクラスの中にその情報を記述することになります。
Beanの規模が大きくなってきた場合や、
Beanを製品として出荷するような場合には BeanInfo のクラスも併せて
作成しておくべきでしょう。
/** PhotoButton の BeanInfo クラス */
package photobutton;
import java.awt.*;
import java.beans.*;
public class PhotoButtonBeanInfo extends SimpleBeanInfo {
/** アイコンイメージの指定 */
public Image getIcon( int iconType ) {
if( iconType == ICON_COLOR_16x16 )
return loadImage( "icon16.gif" );
else if( iconType == ICON_COLOR_32x32 )
return loadImage( "icon32.gif" );
else
return null;
}
}
上の例では特にプロパティやメソッドに関する新たな情報はつけ加えず、
単にアイコンの画像に関する情報を指定しているだけです。
BeanInfo のクラスのバイトコード、及び必要ならばアイコン用の画像データなど
も Beanの Jarアーカイブの内部に一緒に保存しておきます。
jar cvmf photobutton.mani photobutton.jar photobutton/*.class photobutton/*.gif
これで、たとえば開発ツールが Beanを読み込んだ時に、アイコンの画像が自動的に
利用されるようになります。(下図は BeanBoxに読み込んだ時の例)