ImpressedMessage.java



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

/** メッセージを立体的に表示する ImpressMessage クラス */

public class ImpressedMessage extends Applet {

     /** メッセージの内容 */  

       public String message = null;

     /** 文字の色 */  

       public Color color = null;

     /** メッセージのフォント */  

       public Font font = null;

     /** 初期設定のメソッド(生成時に自動的に呼ばれる)*/

       public void init() {

             font = new Font( "TimesRoman", Font.ITALIC, 36 );

             message = getParameter("message");
             if ( message == null )
                  message = "Welcome to Wakkanai!";

             int red = getIntValue("red");
             int green = getIntValue("green");
             int blue = getIntValue("blue");
             if( red == -1 || green == -1 || blue == -1 )
                 color = Color.lightGray;
             else
                 color = new Color( red, green, blue );
       }

     /** 初期画面を描くメソッド(画面に現れた時に自動的に呼ばれる)*/

       public void paint( Graphics g ) {

             g.setFont( font );

             g.setColor( color.darker() );
             g.drawString( message, 5, 26 );     // 影を描く

             g.setColor( color.brighter() );
             g.drawString( message, 3, 24 );    // ハイライト

             g.setColor( color );
             g.drawString( message, 4, 25 );    // 文字の本体
       }

     /** パラメータの文字列を解釈するメソッド */

       protected int getIntValue( String name ) {

             String word = getParameter( name );
             if( word == null )     // 値が与えられていない
                 return -1;
             int value = Integer.parseInt( word );
             if( 0 <= value  &&  value <= 255 )   // 適当な範囲
                 return  value;
             else
                 return -1;
       }
}