import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Event;

/**
 マウスの操作で表示が反転するアプレット RevName のクラス定義
 */
public class RevName extends Applet {

     /**
      表示する文字列
      */
       public String message = "Fujio Maruyama";

     /**
      フォント
      */
       public Font textFont = null;

     /**
      マウスがアプレット内にあるかどうかを示すフラグ
      */
       private boolean stateFlag = false;

     /**
      初期設定を行う。生成時に自動的に呼ばれる。
      */
       public void init() {

             int width;

             textFont = new Font( "TimesRoman", Font.ITALIC, 24 );
             width = getFontMetrics(textFont).stringWidth( message ) + 10;
             resize( width, 32 );
       }

     /**
      アプレットにグラフィックを描く。
      最初の表示の時には自動的に、後は repaint() によって呼ばれる。
      */
       public void paint( Graphics g ) {

           // マウスはアプレットの外にある

             if( stateFlag == false ) {
                  g.setFont( textFont );
                  g.setColor( Color.black );
                  g.fill3DRect( 0, 0,
                       size().width-2, size().height-2, false );
                  g.setColor( Color.yellow );
                  g.drawString( message, 5, 22 );
             }

          // マウスがアプレットの中にある

             else {
                  g.setFont( textFont );
                  g.setColor( Color.yellow );
                  g.fill3DRect( 0, 0,
                       size().width-2, size().height-2, true );
                  g.setColor( Color.black );
                  g.drawString( message, 5, 22 );
             }
       }

     /**
      マウスがアプレット内に入った時に自動的に呼び出される。
     */
       public boolean mouseEnter( Event evt, int x, int y ) {

             stateFlag = true;
             repaint();       // paint() を呼び出す

             return true;     // 形式上必要
       }

     /**
      マウスがアプレットの外に出た時に自動的に呼び出される。
     */
       public boolean mouseExit( Event evt, int x, int y ) {

             stateFlag = false;
             repaint();       // paint() を呼び出す

             return true;     // 形式上必要
       }
}

