Java 如何为动作中的键设置加速器?

Java 如何为动作中的键设置加速器?,java,swing,jmenu,Java,Swing,Jmenu,我正在尝试将我的大多数菜单整合到两个类似的应用程序中,它们共享很多类。其中一部分原因是我正试图将我能做的一切付诸行动。我遇到的问题是,我希望菜单项使用相同的加速器。是否有一种方法可以在操作中设置此项,这样我就不必重复设置加速器的代码 package com.protocase.viewer.actions; import com.protocase.viewer.DesignerApplication; import java.awt.event.ActionEvent; import jav

我正在尝试将我的大多数菜单整合到两个类似的应用程序中,它们共享很多类。其中一部分原因是我正试图将我能做的一切付诸行动。我遇到的问题是,我希望菜单项使用相同的加速器。是否有一种方法可以在操作中设置此项,这样我就不必重复设置加速器的代码

package com.protocase.viewer.actions;

import com.protocase.viewer.DesignerApplication;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import static javax.swing.Action.MNEMONIC_KEY;
import static javax.swing.Action.SHORT_DESCRIPTION;


/**
 *
 * @author davidh
 */
public class NewEnclosureAction extends AbstractAction{

    private DesignerApplication app;

    public NewEnclosureAction(DesignerApplication app) {
        super();
        this.app = app;
        putValue(SHORT_DESCRIPTION, "New");
        putValue(AbstractAction.NAME, "New");
        putValue(MNEMONIC_KEY, KeyEvent.VK_N);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
       app.OnNew();
    }

}

    JMenuItem newMit = new JMenuItem(new NewEnclosureAction(this));
    newMit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.ALT_MASK));
    newMit.getAccessibleContext().setAccessibleDescription("New Enclosure from template");
    fileMenu.add(newMit);

    JMenuItem newMit = new JMenuItem(new NewEnclosureAction(this));
    newMit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.ALT_MASK));
    newMit.getAccessibleContext().setAccessibleDescription("New Enclosure from template");
    fileMenu.add(newMit);
我希望将setAccelerator调用移动到我的action类中


有什么方法可以做到这一点吗?

加速器按键有一个值,如简短的描述,在您的情况下,该值可以这样写:

    putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.ALT_MASK));

如果您使用Eclipse作为IDE,在键入
putValue
并点击自动完成快捷键时,它应该会告诉您可用的键。

加速器键有一个值,如简短描述所示,在您的情况下,它会这样写:

    putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.ALT_MASK));

如果您使用Eclipse作为IDE,在键入
putValue
并点击自动完成快捷键时,它应该会告诉您可用的键。

1)使用2)为了更快地获得更好的帮助,请发布一个。我认为这是一个非常简单的示例。我展示了我的动作类是什么样子,以及我称之为“简单”的地方。“简单”不是“SSCCE”的任何一部分。请阅读链接。同意。下次我会参考这个。1)使用2)为了更快地获得更好的帮助,发布一个。我会说这是一个非常简单的例子。我展示了我的动作类是什么样子,以及我称之为“简单”的地方。“简单”不是“SSCCE”的任何一部分。请阅读链接。同意。下次我会参考这个。