ColorControl.java



import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Event;
import java.awt.Color;
import java.awt.Image;
import java.awt.image.FilteredImageSource;
import java.awt.Panel;
import java.awt.TextField;

/** RGB値をコントロールしてイメージを表示する ColorControlクラス */

public class ColorControl extends Applet {

   /** イメージのオブジェクト */

      public Image original = null;
      public Image filtered = null;

   /** フィルターのオブジェクト */

      public ColorFilter filter = null;

   /** パネル */

      public Panel panel;

   /** HSB値を入力するアイテム */

      public TextField rFiled, gField, bField;

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

      public void init() {

          String name = getParameter( "source" );
          if( name == null )
              original = getImage( getCodeBase(), "fujiki.gif" );
          else
              original = getImage( getDocumentBase(), name );
          filter = new ColorFilter();

          filtered = createImage(
                     new FilteredImageSource( original.getSource(), filter ));

          panel = new Panel();
          rFiled = new TextField( "100", 4 );
          rFiled.setForeground( Color.red );
          panel.add( rFiled );
          gField = new TextField( "100", 4 );
          gField.setForeground( Color.green );
          panel.add( gField );
          bField = new TextField( "100", 4 );
          bField.setForeground( Color.blue );
          panel.add( bField );
          add( panel );
       }

   /** 表示のメソッド */

       public void paint( Graphics g ) {

          g.drawImage( filtered,( size().width - original.getWidth(this) )/2,
                       panel.size().height, this );
       }

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

       public boolean action( Event evt, Object obj ) {

           String text;
           int value;

           if( evt.target == rFiled ) {

                text = rFiled.getText();
                try {
                     value = Integer.parseInt( text );
                }
                catch( NumberFormatException e ){
                     return true;
                }
                filter.setRed( value );
           }
           else if( evt.target == gField ) {

                text = gField.getText();
                try {
                     value = Integer.parseInt( text );
                }
                catch( NumberFormatException e ){
                     return true;
                }
                filter.setGreen( value );
           }
           else if( evt.target == bField ) {

                text = bField.getText();
                try {
                     value = Integer.parseInt( text );
                }
                catch( NumberFormatException e ){
                     return true;
                }
                filter.setBlue( value );
           }
           else  return true;

          filtered = createImage(
                     new FilteredImageSource( original.getSource(), filter ));
          repaint();
          return true;
       }
}