私は現在Javaで電卓を構築しており、キーリスナー を実装し始めました。それは非常にうまく動作しますが、キャレット記号(^)を入力しようとするとすぐには登録されません。最初に別のキーを押す必要があります。キャレット(^)はすぐに登録されません。 Javaキーリスナー
普通のテキスト文書にキャレット を入力しようとしたときと同じ動作を使用していると思います。しかし、この行動を回避する方法はありますか?
それが助け場合は、ここでキーイベントを処理するために、私のコードは次のとおりです。
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (key.matches("[0-9*/+-=.()^%]")) {
controller.getButton(key).fire();
}
}
EDIT:回避策を見つけました。 Eli Sadoffが言いましたように、私のキャレットはキーボードの死んだ鍵です。私は、キャレットのための結合は、「シフト+¨」であることから、私はこのようにそれを解決することができました:
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (ke.isShiftDown() && ke.getCode() == KeyCode.DEAD_DIAERESIS) {
controller.getButton("^").fire();
}
else if (key.matches("[0-9*/+-=.()%]")) {
controller.getButton(key).fire();
}
}
'+'、 '('、 ')'、 '%'と同じ問題がありますか? –
いいえ、どちらもありません。 – Javatar4ever
あなたのキャレットキーはあなたのコンピュータの死んだキーですか? (意味は '^'を入力し、次に 'e'は 'ê'を生成します) –