KeyTest.java



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

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

public class KeyTest extends Applet {

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

        private StringBuffer buf = null;

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

        private boolean focusFlag = false;

   /** 初期設定を行う。最初は空白の文字 */

        public void init() {
               buf = new StringBuffer( " " );
               resize( 33, 33 );
        }

   /**
    * アプレットにグラフィックを描く
    * 最初の表示の時には自動的に、後はrepaint() によって呼び出される
    */
        public void paint( Graphics g ) {
               g.setColor( Color.lightGray );
               if( focusFlag == false ) {  // キーボードフォーカスがない
                   g.fill3DRect( 0, 0, 32, 32, false );  // 通常のハイライトで表示
               }
               else {   // キーボードフォーカスがある
                   g.fill3DRect( 0, 0, 32, 32, true );   // ハイライトの表示を反転
               }
               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;
        }
}