//MyFirstCoffee.java -- by tsaiwn@csie.nctu.edu.tw
import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;
import java.awt.*;    // Graphics, Font, Color, ...
public class MyFirstCoffee extends Applet 
     implements MouseListener {
       ///////////// 注意檔名要與 Class 名相同

  public static void main(String xxx[ ]) {
     Frame f = new Frame("Java");
     MyFirstCoffee me = new MyFirstCoffee( );
     f.setSize(500,600);
     f.add(me);
     f.setVisible(true);
     me.init( );
     me.start( );

  }
  public void update(Graphics ggg ) {
      System.out.println(" update kk=" + kk++);
      paint(ggg);
  }
  public void repaint( ) {
      super.repaint( );
      System.out.println(" repaint kk=" + kk++);
  }
  public void start( ) {
   System.out.println(" start kk=" + kk++);
  }
  public void stop( ) {
   System.out.println(" stop kk=" + kk++);
  }
  public void destroy( ) {
   System.out.println(" destroy kk=" + kk++);
  }
  ////////
     String s; // global 變數以便後續 function 也可用
     public void init ( ) {   //通常寫只會做一次的工作
       System.out.println(" init kk=" + kk++);
       try {
        s= getParameter("MSG");  // 抓<applet> 裡的參數 MSG放s
       }catch(Exception e) { 
         System.out.println("No parameter MSG");
       }
        addMouseListener(this);
     }
  /////////////////////////
              public void paint (Graphics g) {
                 System.out.println("paint kk=" + kk++);
                 if(s == null ) s= "Ha Ha Ha !\nHee Heeee!";
                       // 在appletviewer抓不到ㄟ,  阿只好 ...(bug? 可能 HTML沒寫好)
                 g.clearRect(0, 0, getSize().width, getSize().height);
                 g.setColor(Color.blue);  // 所有顏色常數是小寫 ! 怪哉? 因為可以改
                 g.setFont( new Font("Courier", Font.BOLD, 32) );
                 //setBackground(Color.green); //這是Applet的method
                 g.drawString("Hey You!", 44, 80 );


                 g.setColor(Color.red);  // 所有顏色常數是小寫 ! 變數!
                 g.drawRect(55, 160-32, 20*s.length() , 36);  // red
                 g.setColor(Color.yellow);
                 g.fillRect(57, 160-32+2, 20*s.length()-4 , 36-4);
                 ///
                 g.setFont( new Font("Courier", Font.PLAIN, 24) );
                 g.drawString("s.length()="+s.length(), 60, 220);
                 g.setFont( new Font("Courier", Font.BOLD, 32) );
                 g.setColor(Color.magenta);  // magenta
                 g.drawString(s, 60, 160 );         
                 g.setFont( new Font("標楷體", Font.BOLD, 32) );
                 g.setColor(Color.orange);  // orange
                 g.drawString(s, 60, 280 );         
              }
              public void mouseClicked(MouseEvent e) {
                System.out.println(" kkk kkk kkk");
                Color xx[ ] = {Color.red, Color.blue, Color.green};
                myColor++; myColor %= xx.length;
                setBackground( xx[myColor] );
                repaint( );
              }
              int myColor=0;
    public  void mousePressed(java.awt.event.MouseEvent e){ }
    public void mouseReleased(java.awt.event.MouseEvent e){}
    public void mouseEntered(java.awt.event.MouseEvent e){}
    public  void mouseExited(java.awt.event.MouseEvent e){}
    int kk=0;
}// class
