- - PR -
[BACK SPACE]のキーのみ、getKeyCodeできない
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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です。 どうか、よろしくお願いします。 |
|
投稿日時: 2004-06-05 08:14
モンプチさん、こんにちは。
ソースコードのコメントの意味が、BSを押すと System.out.printlnで 8が表示され、KeyEvent.VK_BACK_SPACEを 8と書いてもうまく行かないの なら、スーパクラスが元々 BSを処理しないのではないでしょうか? 一度 processKeyEventのオーバライドをやめて BSの振る舞いを確認して はいかがでしょう? |
|
投稿日時: 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
