RevName.java
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 = "Wakkanai Hokusei";
/** フォント */
public Font textFont = null;
/** マウスがアプレット内にあるかどうかを示すフラグ */
protected 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.yellow );
g.fill3DRect( 1, 1, size().width-2, size().height-2, true );
g.setColor( Color.black );
g.drawString( message, 5, 22 );
}
else { // マウスがアプレットの中にある
g.setFont( textFont );
g.setColor( Color.black );
g.fill3DRect( 1, 1, size().width-2, size().height-2, false );
g.setColor( Color.yellow );
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; // イベント処理を行った
}
}