Search code examples
javakeystrokejmenu

Add shortcut for JMenuItem in loop


I created my JMenu with specific categories and items inside. I want to add in for() shortcuts for each item depends on items count but I don't know how.

In for lopp I use this:

item.setAccelerator(KeyStroke.getKeyStroke(
                    java.awt.event.KeyEvent.VK_x, 
                    java.awt.Event.CTRL_MASK));

In 'x' I want to use numbers from 0-9 and if I have more items than 10 then change VK_x to VK_NUMPADx.

Is it possible is some easy way?


Solution

  • You can do something like this:

    int[] events = { KeyEvent.VK_0, KeyEvent.VK_1 ... KeyEvent.VK_9, KeyEvent.VK_NUMPAD0 ... KeyEvent.VK_NUMPAD9 };
    JMenuItem[] items = {item1,item2 ... item20};
    for(int i = 0;i < events.length && i < items.length;i++){
        items[i].setAccelerator(KeyStroke.getKeyStroke(
                    events[i], 
                    Event.CTRL_MASK));
    }
    

    In this example, item1 will be associated with KeyEvent.VK_0, item2 with KeyEvent.VK_1 and so on.