Accelerators - odd behavior

Tomas Mikula tomas.mikula at
Fri Sep 26 17:23:41 UTC 2014

Hi Kevin,

On Fri, Sep 26, 2014 at 7:16 PM, Kevin Rushforth
<kevin.rushforth at> wrote:
> It seems to me that this is working as designed. You have created two
> different KeyCombinations and asked that both fire your runnable. Further,
> both of the KeyCombinations match your key input since both a KeyPressed and
> a KeyTyped event are sent when pressing a key that has an associated
> character. I'm not sure how we could change it in a way that wouldn't be
> surprising or difficult to specify or document.

The Javadoc for KeyCharacterCombination#match also says

"This means that the method can return true only for KEY_PRESSED
andKEY_RELEASED events, but not for KEY_TYPED events, which don't have
valid key codes."

Thus it is probably not related to KEY_TYPED events.


> -- Kevin
> Scott Palmer wrote:
>> KeyCombination cmdMinus = new Key*Code*Combination(KeyCode.MINUS,
>> KeyCombination.CONTROL_DOWN);
>> KeyCombination cmdMinusFromCharacter = new Key*Character*Combination("-",
>> KeyCombination.CONTROL_DOWN);
>> Using the above like this:
>> scene.getAccelerators().put(cmdMinus, runnable);
>> scene.getAccelerators().put(cmdMinusFromCharacter, runnable);
>> Will result in the runnable being fired twice from the same keypress.
>> I propose changing the accelerator processing logic so that only one
>> runnable gets called as the intention appears to be that a KeyCombination
>> can only have one runnable associated with it, but the logic in Map
>> doesn't
>> see the above two KeyCombinations as the same key in the Map.
>> Note: With the second combination above I really wanted something that
>> worked for both MINUS and SUBTRACT simultaneously - since they both type
>> the same Character and only one accelerator can be set on a MenuItem.
>> Scott

More information about the openjfx-dev mailing list