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;
}
}