KeyTest11.java



import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

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

public class KeyTest11 extends Applet
       implements MouseListener, KeyListener, FocusListener {

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

        private StringBuffer buf = null;

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

        private boolean focusFlag = false;

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

        public void init() {
               buf = new StringBuffer( " " );
               setSize( 33, 33 );    // JDK1.0 では resize()
               addMouseListener( this );  //自分自身を登録
               addKeyListener( this );    //自分自身を登録
               addFocusListener( this );  //自分自身を登録
        }

   /**
    * アプレットにグラフィックを描く
    * 最初の表示の時には自動的に、後は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 void keyTyped( KeyEvent evt ) {

               buf.setCharAt( 0, evt.getKeyChar() ); // 入力された文字をbufに記憶
               repaint();                            // paint() を呼び出す
        }

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

        public void keyPressed( KeyEvent evt ) {
        }

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

        public void keyReleased( KeyEvent evt ) {
        }

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

        public void focusGained( FocusEvent evt ) {

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

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

        public void focusLost( FocusEvent evt ) {

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

   /** マウスカーソルが入った時に自動的に呼び出される */

        public void mouseEntered( MouseEvent evt ) {

               requestFocus();
        }

   /** マウスカーソルが出た時に自動的に呼び出される */

        public void mouseExited( MouseEvent evt ) {
        }

   /** マウスボタンがクリックされた時に自動的に呼び出される */

        public void mouseClicked( MouseEvent evt ) {
        }

   /** マウスボタンが押し込まれた時に自動的に呼び出される */

        public void mousePressed( MouseEvent evt ) {
        }

   /** マウスボタンが放された時に自動的に呼び出される */

        public void mouseReleased( MouseEvent evt ) {
        }
}