 // 画像の色を変える [Car2.java] 
 import java.applet.Applet; 
 import java.awt.*; 
 import java.awt.image.*;  // PixelGrabberを使用 
 import java.awt.event.*;  // JDK 1.1 
 public class Car2 extends Applet  
        implements MouseListener {  // JDK 1.1 
    PixelGrabber pixelG; 
    Image img; 
    int [] org;       // オリジナルの配列 
    int [] change;    // 変更後の配列 
    int w,h,ww,hh; 
    Color [] col={Color.red,Color.green,Color.blue}; 
  public void init() {  // アプレットロード時の初期化メソッド 
     MediaTracker mediaT= new MediaTracker(this); 
     img=getImage(getDocumentBase(),"car.gif"); // 画像の読み込み 
     mediaT.addImage(img,0); 
     try { 
        mediaT.waitForAll(); 
     } catch ( InterruptedException e) { } 
     w=img.getWidth(null);   // 画像の横の大きさ 
     h=img.getHeight(null);  // 画像の縦の大きさ 
     org   =new int[w*h];    //(a) 配列の確保(オリジナル) 
     change=new int[w*h];    //(a) 配列の確保(変更後) 
     pixelG=new PixelGrabber(img,0,0,w,h,org,0,w); //(b) 
     try{ 
        pixelG.grabPixels(); 
     } catch ( InterruptedException e) { } 
     addMouseListener(this);             // JDK 1.1 
  } // end init 
  //============= JDK 1.1 イベント処理(マウス) ============= 
  public void mousePressed(MouseEvent e) { // ボタンを押す 
     int x=e.getX()/(ww/3); //(c)マウスのボタンを押したx位置 
     int c=0xffff0000;      //(d) 赤 
     if      (x == 1) { c=0xff00ff00; }  //(d) 緑 
     else if (x == 2) { c=0xff0000ff; }  //(d) 青 
     for (int i=0; i<w*h; i++) {         //(e) 
        if (org[i] == 0xffff0000) change[i]=c; 
                             else change[i]=org[i]; 
     } 
     img=createImage( 
         new MemoryImageSource(w,h,change,0,w)); //(f) 
     repaint(); 
  } //end mousePressed 
  public void mouseReleased(MouseEvent e) { } // JDK 1.1 
  public void mouseClicked (MouseEvent e) { } // JDK 1.1 
  public void mouseEntered (MouseEvent e) { } // JDK 1.1 
  public void mouseExited  (MouseEvent e) { } // JDK 1.1 
  //================== paintメソッド ======================= 
  public void paint(Graphics g) { 
     ww=getSize().width;     // ウィンドウの横の大きさ 
     hh=getSize().height;    // ウィンドウの縦の大きさ 
     for (int i=0; i<3; i++) { 
        g.setColor(col[i]);  // 色の設定 
        g.fillRect(ww/3*i,hh-20,ww/3,20);  // 長方形の作成 
     } 
     g.drawImage(img,10,10,this); //(g) 画像の出力 
  } //end paint 
 } //end Car2 
