- PR -

[BACK SPACE]のキーのみ、getKeyCodeできない

1
投稿者投稿内容
モンプチ
常連さん
会議室デビュー日: 2004/06/03
投稿数: 28
投稿日時: 2004-06-03 11:45
どうかお助け願います。

入力判定処理を行っており、以下のメソッドで指定した[DEL][BS][→][←]キー以外を、
入力判定し、拒否しています。
しかし、[BACK SPACE]だけが判定できず入力できません。
他のキーは、判定できます。

protected void processKeyEvent(KeyEvent e)
{
System.out.println(e.getKeyCode()); //[BS]を押すと 8

// [BS][DEL][←][→]キーは入力判定対象外
if (
e.getKeyCode()== KeyEvent.VK_DELETE ||
e.getKeyCode()== KeyEvent.VK_BACK_SPACE || //8もダメ
e.getKeyCode()== KeyEvent.VK_RIGHT ||
e.getKeyCode()== KeyEvent.VK_LEFT)
{
super.processKeyEvent(e);
return;
}
}

バージョンは、J2sdk1.4.2_04です。
OSはWinNT4.0です。

どうか、よろしくお願いします。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-06-05 08:14
モンプチさん、こんにちは。

ソースコードのコメントの意味が、BSを押すと System.out.printlnで
8が表示され、KeyEvent.VK_BACK_SPACEを 8と書いてもうまく行かないの
なら、スーパクラスが元々 BSを処理しないのではないでしょうか?

一度 processKeyEventのオーバライドをやめて BSの振る舞いを確認して
はいかがでしょう?
モンプチ
常連さん
会議室デビュー日: 2004/06/03
投稿数: 28
投稿日時: 2004-06-07 11:20
Kissinger様、御返事有難う御座います。
色々調べた結果、以下で解決しました。

protected void processKeyEvent(KeyEvent e)
{
// [DEL][←][→]キーは入力判定対象外
if ( e.getKeyCode()== KeyEvent.VK_DELETE ||
e.getKeyCode()== KeyEvent.VK_RIGHT ||
e.getKeyCode()== KeyEvent.VK_LEFT )
{
super.processKeyEvent(e);
return;
}

// なんで[BS]だけ、Unicode??
if (e.getID() == KeyEvent.KEY_TYPED)
{
char c = e.getKeyChar();

// [BS]キーは入力判定対象外
if (c== KeyEvent.VK_BACK_SPACE)
{ super.processKeyEvent(e);
return;
}
}
1

スキルアップ/キャリアアップ(JOB@IT)