ColorPen.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
/** マウスで絵を描くアプレット ColorPen クラス */
public class ColorPen extends Applet
implements ItemListener, MouseMotionListener {
/** 線を描く時の両端の座標 */
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] );
colorBox[i].addItemListener( this );
}
palette.setCurrent( colorBox[7] );
add( panel ); // パネルを配置
addMouseMotionListener( this );
}
/** アクションの処理のメソッド */
public void itemStateChanged( ItemEvent evt ) {
for( int i=0; i<8 ; i++ ) {
if( palette.getCurrent().equals( colorBox[i] ) )
penColor = color[i];
}
}
/** アプレットにグラフィックを描く。repaint() によって呼び出される。*/
public void update( Graphics g ) {
g.setColor( penColor );
g.drawLine( x1, y1, x2, y2 ); // 線を描く
x1 = x2;
y1 = y2;
}
/** マウスのイベント処理のメソッド */
public void mouseDragged( MouseEvent evt ) {
x2 = evt.getX();
y2 = evt.getY();
repaint(); // update() を呼び出す
}
/** マウスのイベント処理のメソッド */
public void mouseMoved( MouseEvent evt ) {
x1 = evt.getX();
y1 = evt.getY();
}
}