KeyTest.java



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

/** キーボード入力ができるアプレット KeyTest クラスの定義 */

public class KeyTest extends Applet {

    /** 押されたキーの文字を記憶するためのバッファ*/  

       protected StringBuffer buf = null;

    /** キーボード・フォーカスがあるかどうかを示すフラグ */

       protected boolean focusFlag = false;

    /** 初期設定を行う。最初は空白の文字。アプレットのサイズを調整 */  

       public void init() {

             buf = new StringBuffer( " " );
             resize( 33, 33 );
       }

    /** アプレットにグラフィックを描く。
     最初の表示の時には自動的に、後は repaint() によって呼び出される。*/

       public void paint( Graphics g ) {

            g.setColor( Color.lightGray );
            g.fill3DRect( 0, 0, 32, 32, focusFlag ); // フォーカスの有無で表示が変わる

            g.setColor( Color.black );
            g.drawString( buf.toString(), 12, 20 );  // 文字を描く
       }

    /** キーが押された時に自動的に呼び出される。*/

       public boolean keyDown( Event evt, int key ) {

             buf.setCharAt( 0, (char)key );  // 押された文字を buf に記憶
             repaint();                      // paint() を呼び出す
             return true;
       }

    /** キーボードフォーカスを得た時に自動的に呼び出される。*/

       public boolean gotFocus( Event evt, Object obj ) {

             focusFlag = true;
             repaint();                      // paint() を呼び出す
             return true;
       }

    /** キーボードフォーカスを失った時に自動的に呼び出される。*/

       public boolean lostFocus( Event evt, Object obj ) {

             focusFlag = false;
             repaint();                      // paint() を呼び出す
             return true;
       }
}