キーボードイベント(画像の移動)


(注意)Applet内をクリックしてからキー操作してください。

[T],[F],[G],[H]キーで画像を移動できる。[Enter]キーで初期位置に戻る。
上記キー以外の場合,Applet下部に押されたキーを表示する。[ESC]キー押せばクリアできる。

Java Appletです

ソースコード

import java.applet.*;
import java.awt.*;

public class ja09 extends Applet
{
  int pctX,pctY;		//画像の左上座標
  Image pct;			//移動さす画像
  char ck;			//キーボードから取得するキャラクタ型
  boolean tfgh = false;		//T,F,G,Hキーが押されたかどうかを識別
  String cs,st;
  Font f;

  public void init(){
	pctX = 200;		//画像の初期位置
	pctY = 100;
	ck = ' ';
	st = "";
	f = new Font("TimesRoman",Font.PLAIN,16);
	pct = getImage(getCodeBase(),"ja09.gif");	//画像の取得
  }

  public void paint(Graphics g){
	g.drawImage(pct,pctX,pctY,this);	//画像を描画
	g.setColor(Color.blue);
	g.setFont(f);
	if(tfgh){			//T,F,G,H,Enterキーが押された場合
	  if(ck == 't')cs = "[T]キーで上に";
	  if(ck == 'f')cs = "[F]キーで左に";
	  if(ck == 'g')cs = "[G]キーで下に";
	  if(ck == 'h')cs = "[H]キーで右に";
	  if(ck == 10)cs = "[Enter]キーで元の位置に";
	    g.drawString(cs + "移動しました。現在の左上座標は" + pctX + ":" + pctY,5,15);
	}else{
	  g.drawString("[T]キーで上に,[G]キーで下に,[F]キーで左に,[H]キーで右に移動できます。",5,15);
	}
	g.drawString(st,30,170);	//Applet下部に,T,F,G,H以外の押されたキーを表示する。
  }

  public boolean keyDown(Event evt,int key){
	ck = (char)key;		//押されたキーのchar型を取得
	switch(ck){
	case 't':		//[T]キーが押された場合
		pctY = pctY - 10;		//上に移動
		tfgh = true;
		break;
	case 'f':
		pctX = pctX - 10;
		tfgh = true;
		break;
	case 'g':
		pctY = pctY + 10;
		tfgh = true;
		break;
	case 'h':
		pctX = pctX + 10;
		tfgh = true;
		break;
	case 10:		//[Enter]キーが押された場合
		pctX = 200;	//画像を初期位置に戻す
		pctY =100;
		tfgh = true;
		break;
	default:	//T,F,G,H,Enterキー以外の場合
		st = st + ck;
		if(ck == 27)st = ""; //[ESC]キーで文字列をクリアする
		tfgh = false;
	}
	repaint();
	return true;
  }
}

末尾