3

一部のシーンにアクセラレータを追加しようとしていますが、場合によっては単純なワンキー アクセラレータが必要です。私は KeyCodeCombination にしか慣れていませんが、修飾子を使用できないようです。

不思議なことに、私は修飾子 + ANY (例: SHIFT_ANY) を使用しましたが、常に機能しているようには見えません (私の F10 アクセラレータではシフト キーの上下で機能しますが、F2 アクセラレータではシフトキー下)。

KeyCodeCombination を使用してキー アクセラレータを 1 つだけ作成する方法はありますか? それとも、何か他のものを使用する必要がありますか? または、F2キーとSHIFT_ANYの組み合わせがシフトキーUPで機能しない理由を誰かに教えてもらえますか?

ここに私のアクセラレータコードがあります:

    KeyCodeCombination f2 = new KeyCodeCombination(KeyCode.F2, KeyCombination.SHIFT_ANY);
    KeyCodeCombination f10 = new KeyCodeCombination(KeyCode.F10, KeyCombination.SHIFT_ANY);

    thisScene.getAccelerators().put(f2, new Runnable() {

        @Override
        public void run() {
            buttonCancel.fire();
            System.out.println("F2 pressed");
        }
    });
    thisScene.getAccelerators().put(f10, new Runnable() {

        @Override
        public void run() {
            buttonSave.fire();
            System.out.println("F10 pressed");
        }
    });
4

1 に答える 1

1

KeyCodeCombination を使用してキー アクセラレータを 1 つだけ作成する方法はありますか?

はい。KeyCodeCombination コンストラクターを使用するだけで、修飾子を渡さないでください。たとえば、James_D のコメントのように:

new KeyCodeCombination(KeyCode.F2)

F2 キーと SHIFT_ANY の組み合わせが Shift キー UP で機能しない理由を教えてもらえますか?

いいえ、私のキーボードでは、シフト キーを上に押しながら F2 を押すと、F2+SHIFT_ANY のアクセラレータが起動します (デスクトップ、US、Win 7、Java 8b129)。

于 2014-03-27T20:04:48.373 に答える