ButtonControl11.java



import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

/** コンポーネントの表示をコントロールする ShowAdapter クラス */

class ShowAdapter implements ItemListener {

   /** コントロールを受けるコンポーネント */

      Component sheep;

   /** コンストラクタ */

      ShowAdapter( Component sheep ) {

           this.sheep = sheep;
      }

   /** 独自のアクション処理 */

      public void itemStateChanged( ItemEvent evt ) {

            if( ( (Checkbox)evt.getSource() ).getState() )
                   sheep.setVisible( false );
            else
                   sheep.setVisible( true );
      }
}

/** コンポーネントの状態をコントロールする EnableAdapter クラス */

class EnableAdapter implements ItemListener {

   /** コントロールを受けるコンポーネント */

      Component sheep;

   /** コンストラクタ */

      EnableAdapter( Component sheep ) {

           this.sheep = sheep;
      }

   /** 独自のアクション処理 */

      public void itemStateChanged( ItemEvent evt ) {

            if( ( (Checkbox)evt.getSource() ).getState() )
                   sheep.setEnabled( false );
            else 
                   sheep.setEnabled( true );
      }
}

/** アクションの処理をテストするアプレット ButtonControl11 クラス */

public class ButtonControl11 extends Applet implements ActionListener{


   /** インターフェイスの部品の宣言 */ 

      public Button button;
      public Checkbox showControl;
      public Checkbox enableControl;

   /** 初期設定のメソッド */

      public void init() {

           button = new Button( "Change Applet Color" );
           showControl = new Checkbox( "Show/Hide" );
           enableControl = new Checkbox( "Enable/Disable" );
           add( enableControl );
           add( showControl );
           add( button );

           EnableAdapter enableAdapter = new EnableAdapter( showControl );
           ShowAdapter showAdapter = new ShowAdapter( button );

           enableControl.addItemListener( enableAdapter );
           showControl.addItemListener( showAdapter );
           button.addActionListener( this );
      }

   /** 色の状態を記憶するフラグ */

     public boolean flag = true;

   /** アプレットのアクション処理のメソッド */

      public void actionPerformed( ActionEvent evt ) {

           if( flag ) {
                 setBackground( Color.red );
                 flag = false;
           }
           else {
                 setBackground( Color.white );
                 flag = true;
           }
     }
}