路地裏牧場

技術系ブログだったけどごった煮になった謎ブログ

Javatterβでショートカットキー

別にJavatterβじゃなくてもいいです。

メソッド

public void addShortCut(int keyCode, int modifies, ActionListener... listeners) {
    JFrame frame = getMainView().getMainFrame();
    JMenuBar menuBar;
    if ((menuBar = frame.getJMenuBar()) == null) {
        menuBar = new JMenuBar();
        menuBar.setPreferredSize(new Dimension(0, 0));
        frame.setJMenuBar(menuBar);
    }
    JMenu menu;
    if (menuBar.getMenuCount() < 1) {
        menu = new JMenu();
        menuBar.add(menu);
    } else {
        menu = menuBar.getMenu(0);
    }
    JMenuItem item = new JMenuItem();
    item.setAccelerator(KeyStroke.getKeyStroke(keyCode, modifies));
    for (ActionListener listener : listeners)
        item.addActionListener(listener);
    menu.add(item);
}

使用

// Ctrl+Enter
addShortCut(KeyEvent.VK_Enter, KeyEvent.KeyEvent.CTRL_DOWN_MASK, listener0);
// A (non-modifies key)
addShortCut(KeyEvent.VK_A, 0, listener1);