Die Key Accelerators in einem Popup
                       Menüs werden, im Vergleich zu denen in einer
                    Menu Bar, nicht automatisch
                    gebunden. Die Klasse
                    org.jowidgets.tools.model.item.MenuModelKeyBinding
                    bietet verschiedenen Möglichkeiten, die Key Accelerator der
                    Action Item Models
                    eines Menu Models an ein
                    IComponent
                    zu binden.
                  
         
Die folgende statische Methode führt ein Binding eines Menu Model mit einem Component durch:
    public static MenuModelKeyBinding bind(final IMenuModel menu, final IComponent component) {...}
                    Tritt auf dem component (oder auf einem
                    seiner Kinder, falls es ein IContainer ist) ein Key Event auf,
                    wird geprüft, ob dafür eine Aktion existiert, und wenn ja, wird
                    diese ausgeführt. Wird das übergebene
                    component disposed, wird automatisch auch das
                    Binding disposed. Es werden auch die Aktionen gebunden, welche
                    erst nach dem Aufruf von bind() hinzugefügt
                    wurden.
                  
         
Das folgende Snipped zeigt die Verwendung (das vollständige Snipped findet sich hier).
1 //create a root frame 2 final IFrameBluePrint frameBp = BPF.frame(); 3 frameBp.setSize(new Dimension(400, 300)).setTitle("Menu model key binding"); 4 final IFrame frame = Toolkit.createRootFrame(frameBp, lifecycle); 5 frame.setLayout(FillLayout.get()); 6 7 //create a popup menu with some actions 8 final MenuModel popup = new MenuModel(); 9 10 final IActionItemModel action1 = popup.addActionItem("Action1"); 11 action1.setAccelerator(VirtualKey.DIGIT_1, Modifier.CTRL); 12 13 final IActionItemModel action2 = popup.addActionItem("Action2"); 14 action2.setAccelerator(VirtualKey.DIGIT_2, Modifier.CTRL); 15 16 final IActionItemModel action3 = popup.addActionItem("Action3"); 17 action3.setAccelerator(VirtualKey.DIGIT_3, Modifier.CTRL); 18 19 //set the popup menu for the frame 20 frame.setPopupMenu(popup); 21 22 //do the key binding to the frame (recursive) 23 MenuModelKeyBinding.bind(popup, frame); 24 25 //set the root frame visible 26 frame.setVisible(true); 27 28 //add some actions after binding to show that they are bound too 29 final IMenuModel submenu = popup.addMenu("Submenu"); 30 31 final IActionItemModel action4 = submenu.addActionItem("Action4"); 32 action4.setAccelerator(VirtualKey.DIGIT_4, Modifier.CTRL); 33 34 final IActionItemModel action5 = submenu.addActionItem("Action5"); 35 action5.setAccelerator(VirtualKey.DIGIT_5, Modifier.CTRL); 36 37 //add listeners to the items 38 action1.addActionListener(new SysoutActionListener(action1)); 39 action2.addActionListener(new SysoutActionListener(action2)); 40 action3.addActionListener(new SysoutActionListener(action3)); 41 action4.addActionListener(new SysoutActionListener(action4)); 42 action5.addActionListener(new SysoutActionListener(action5));
In Zeile 23 wird das Binding durchgeführt.