Accelerators - odd behavior

Kevin Rushforth kevin.rushforth at oracle.com
Fri Sep 26 17:16:35 UTC 2014


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.

-- 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