首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为动作中的键设置加速器?

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

Stack Overflow用户
提问于 2013-08-22 19:53:48
回答 1查看 2.2K关注 0票数 0

我正在尝试将我的菜单合并到两个类似的应用程序中,它们共享大量的类。部分原因是我正试图将我所能做的一切付诸行动。我遇到的问题是,我想要相同的加速器为菜单项。我是否可以在操作中设置它,这样就不必重复设置加速器的代码了吗?

代码语言:javascript
复制
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();
    }

}

.

代码语言:javascript
复制
    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类中。

有办法这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 20:04:44

加速器键有一个值,比如简短的描述,对于你来说,它是这样写的:

代码语言:javascript
复制
    putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.ALT_MASK));

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18389674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档