MenuItem accelerator: nothing happens or NPE
Jonathan Giles
jonathan.giles at oracle.com
Mon Jan 7 14:08:01 PST 2013
A team mate of mine, Paru, informs me that everything is fixed in 8.0.
It appears that in the case of F1, menu accelerators don't work as
expected. I would be shocked if this breaks all accelerators in all
cases. More likely it is just the case of the function keys.
-- Jonathan
On 8/01/2013 7:24 a.m., Werner Lehmann wrote:
> Hi,
>
> there seem to be some accelerator issues with menuitems. I am asking
> first here before creating Jira tickets - maybe it's a problem in my
> head...
>
> 1. Menuitem accelerator "F1" does not work if used JFXPanel. Pressing
> F1 does not trigger the menuitem eventhandler (just like RT-23190?).
> In this case it is supposed to open the online help. Unfortunately we
> are now in a situation where F1 works when any Swing component has
> focus and it silently does not work if the user has clicked on a
> JFXPanel before.
>
> To work around this we added an event filter for the F1 key_typed
> event and are trying to fabricate key events for the Swing event
> queue. So far without success (on the latter part).
>
> 2. In attempt to isolate the problem I created a small test app with a
> menubutton in a stackpane (see below). The menubutton has an item with
> accelerator F1. Pressing F1 throws an NPE. This seems to be the same
> as RT-27192 - with fix version Lombard. Does this mean that menu
> accelerators won't work before 8.0?
>
> Rgds
> Werner
>
>> java.lang.NullPointerException
>> at
>> com.sun.javafx.scene.control.skin.MenuButtonSkinBase$5.run(MenuButtonSkinBase.java:306)
>> at
>> com.sun.javafx.scene.KeyboardShortcutsHandler.processAccelerators(KeyboardShortcutsHandler.java:296)
>> at
>> com.sun.javafx.scene.KeyboardShortcutsHandler.dispatchBubblingEvent(KeyboardShortcutsHandler.java:119)
>> at
>> com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
>> at
>> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
>> at
>> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
>> at
>> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
>> at
>> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
>> at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
>> at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
>> at javafx.event.Event.fireEvent(Event.java:171)
>> at javafx.scene.Scene$KeyHandler.process(Scene.java:3509)
>> at javafx.scene.Scene$KeyHandler.access$2300(Scene.java:3468)
>> at javafx.scene.Scene.impl_processKeyEvent(Scene.java:1900)
>> at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2266)
>> at
>> com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:127)
>> at com.sun.glass.ui.View.handleKeyEvent(View.java:518)
>> at com.sun.glass.ui.View.notifyKey(View.java:951)
>> at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
>> at
>> com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
>> at
>> com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
>> at java.lang.Thread.run(Unknown Source)
>
>
>> public class ShortcutTest extends Application
>> {
>> public static void main(String[] args)
>> {
>> Application.launch(args);
>> }
>>
>> @Override
>> public void start(Stage stage) throws Exception
>> {
>> MenuItem menuItem = new MenuItem("Help");
>> menuItem.setAccelerator(new KeyCodeCombination(KeyCode.F1));
>> menuItem.setOnAction(new EventHandler<ActionEvent>() {
>> @Override public void handle(ActionEvent paramT) {
>> System.err.println("menuitem action"); }
>> });
>>
>> MenuButton button = new MenuButton("click me or press F1");
>> button.getItems().add(menuItem);
>>
>> StackPane stackPane = new StackPane();
>> stackPane.setPrefSize(300, 200);
>> stackPane.getChildren().add(button);
>>
>> stage.setScene(new Scene(stackPane));
>> stage.show();
>> }
>> }
>
>
More information about the openjfx-dev
mailing list