ButtonControl.java



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

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

class ShowControl extends Checkbox {

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

      Component sheep;

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

      ShowControl( String label, Component sheep ) {
           super(label);
           this.sheep = sheep;
      }

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

      public boolean action( Event evt, Object obj ) {

            if( getState() ) sheep.hide();
            else             sheep.show();

            return true;
      }
}

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

class EnableControl extends Checkbox {

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

      Component sheep;

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

      EnableControl( String label, Component sheep ) {
           super(label);
           this.sheep = sheep;
      }

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

      public boolean action( Event evt, Object obj ) {

            if( getState() ) sheep.disable();
            else             sheep.enable();

            return true;
      }
}

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

public class ButtonControl extends Applet {


   /** インターフェイスの部品の宣言 */ 
      public Button button;
      public ShowControl showControl;
      public EnableControl enableControl;

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

      public void init() {

           button = new Button( "I am Controled by Anyone." );
           showControl = new ShowControl( "Show/Hide", button );
           enableControl = new EnableControl( "Enable/Disable", showControl );
           add( enableControl );
           add( showControl );
           add( button );
      }
}