KeyTyped
メソッド内で、 Backspace または Esc 押されている?
http://www.fileformat.info/info/unicode/char/8/index.htm
arg0.getKeyChar()
がintにキャストされる場合:(int)arg0.getKeyChar()
、バックスペースキーの値は8、Escキーの値は27です。
KeyListenerを適切に接続し、そのKeyListenerに必要なメソッドを実装していると仮定して、特定のキー押下を検出するには、次のコードを追加するだけです。
public void keyReleased(KeyEvent ke)
{
if(ke.getKeyCode() == KeyEvent.VK_BACK_SPACE)
{
//code to execute if backspace is pressed
}
if(ke.getKeyCode() == KeyEvent.VK_ESCAPE)
{
//code to execute if escape is pressed
}
}
KeyEventクラスjavadocsは次のリンクにあります: KeyEvent javadocs 。
Java KeyListeners and KeyEventsを実装するときにキーボード入力を検出するために使用されるすべてのJava仮想キーコードのリストがあります。詳細情報KeyListenerについては、次の場所にあります: キーリスナーの作成方法 。求められたようにkeyTypedメソッドを使用するには、 gangqinlaohuの回答 を参照してください。
これは非常に古い問題であることは理解していますが、同じ問題で非常に役立つとわかった回答を追加したいと思います。
Javaプログラムのチャット入力を作成しています。ほとんどの文字をフィルタリングする必要がなかったため、押したり放したりするのではなく、KeyTypedを使用する方が良いです。)とにかくバックスペースは文字を削除しますが、.getKeyCode()は常にドキュメントに従って0を返します。ただし、.getKeyChar()を使用して文字を返し(おそらく四角いボックスとして表示されます)、エスケープ文字 '\ b'を比較を行います。
if(tmp.getKeyChar().equals('\b')) { ... }
Java 7/jdk1.7以上の場合のみevent.getKeyCode()
に対してチェックする場合は、event.getExtendedKeyCode()
を試してくださいメソッド。バックスペースの場合は、プレーンな0ではなく適切なコード(この場合は8)を返します。これにより、\b
をチェックする必要がなくなります。
if (e.getExtendedKeyCode() == KeyEvent.VK_BACK_SPACE) {
System.out.println("Backspace pressed");
}
keyTyped
でe.getExtendedKeyCode()
を使用することもでき、正しいと思われるゼロ以外の値を返します。
個人的には、文字/数字以外のキーにはKeyPressedイベントを使用することを好みます。なぜなら、BackspaceキーまたはEnterキーを入力しているとき、実際には何も入力されていないからです。これが私がやったことです(KeyCodeとKeyEventがjavafx.scene.inputからインポートされていることを確認してください)!
MyTextArea.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event) {
if (event.getCode().equals(KeyCode.BACK_SPACE)){
System.out.println("Success");
}
}
});
これでうまくいったかどうか教えてください:)