PhotoButtonCustomizer.java
/** PhotoButtonのためのカスタマイザ */
package photobutton;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
public class PhotoButtonCustomizer extends Panel
implements Customizer, ActionListener {
/** イメージのファイル名 */
private static String fileNames[]
= { "fuji.gif", "maru.gif", "kana.gif", "hime.gif" };
/** 選択用の PhotoButton */
private PhotoButton buttons[];
/** カスタマイズされる PhotoButton */
private PhotoButton target;
/** コンストラクタ */
public PhotoButtonCustomizer() {
super();
setLayout( new GridLayout( 1, fileNames.length ) );
buttons = new PhotoButton[fileNames.length];
Toolkit tk = Toolkit.getDefaultToolkit();
for( int i=0; i<fileNames.length; i++ ) {
buttons[i] = new PhotoButton( fileNames[i] );
add( buttons[i] );
buttons[i].addActionListener( this );
}
}
/** カスタマイズの対象の設定のメソッド */
public void setObject( Object obj ) {
target = (PhotoButton)obj;
}
/** PropertyChangeのイベントを取り扱うオブジェクト */
protected PropertyChangeSupport support
= new PropertyChangeSupport( this );
/** PropertyChangeListenerの登録のメソッド */
public void addPropertyChangeListener(
PropertyChangeListener lst ) {
support.addPropertyChangeListener( lst );
}
/** PropertyChangeListenerの削除のメソッド */
public void removePropertyChangeListener(
PropertyChangeListener lst ) {
support.removePropertyChangeListener( lst );
}
/** ボタンのアクション処理のメソッド */
public void actionPerformed( ActionEvent evt ) {
PhotoButton source = (PhotoButton)evt.getSource();
Image image = source.getPhoto();
target.setPhoto( image );
support.firePropertyChange( "", null, null );
}
}