ColorPen.java
import java.awt.*;
import java.applet.Applet;
/** マウスで絵を描くアプレット ColorPen クラス */
public class ColorPen extends Applet {
/** 線を描く時の両端の座標 */
protected int x1=0, y1=0, x2=0, y2=0;
/** インターフェイスの部品の宣言 */
public Panel panel;
public CheckboxGroup palette;
public Checkbox colorBox[];
public Color color[], penColor;
/** 初期設定のメソッド */
public void init() {
panel = new Panel(); // カラーボタンを配置するパネル
palette = new CheckboxGroup(); // カラーボタンをグループ化する
colorBox = new Checkbox[8]; // カラーボタン
color = new Color[8]; // 色のデータ
setBackground( Color.white );
panel.setBackground( Color.lightGray );
color[0] = Color.red; color[1] = Color.orange;
color[2] = Color.yellow; color[3] = Color.green;
color[4] = Color.cyan; color[5] = Color.blue;
color[6] = Color.magenta; color[7] = Color.black;
penColor = color[7];
for( int i=0; i<8 ; i++ ) {
colorBox[i] = new Checkbox();
colorBox[i].setCheckboxGroup( palette );
colorBox[i].setBackground( color[i] );
if( i == 7 ) colorBox[i].setState( true );
else colorBox[i].setState( false );
panel.add( colorBox[i] );
}
palette.setCurrent( colorBox[7] );
add( panel ); // パネルを配置
}
/** アクションの処理のメソッド */
public boolean action( Event evt, Object obj ) {
if( evt.target instanceof Checkbox ) {
for( int i=0; i<8 ; i++ ) {
if( palette.getCurrent().equals( colorBox[i] ) )
penColor = color[i];
}
}
return true;
}
/** アプレットにグラフィックを描く。repaint() によって呼び出される。*/
public void update( Graphics g ) {
g.setColor( penColor );
g.drawLine( x1, y1, x2, y2 ); // 線を描く
x1 = x2;
y1 = y2;
}
public boolean mouseDown( Event evt, int x, int y ) {
x1 = x;
y1 = y;
return true;
}
public boolean mouseDrag( Event evt, int x, int y ) {
x2 = x;
y2 = y;
repaint(); // update() を呼び出す
return true;
}
}