首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在Java Swing中删除的KeyStroke

用于在Java Swing中删除的KeyStroke
EN

Stack Overflow用户
提问于 2011-02-03 07:42:20
回答 3查看 7.9K关注 0票数 3

我正在尝试使用InputMap/ActionMap截取delete键。我让它与Enter一起工作,但它似乎没有delete响应(这是在Mac上,所以我想知道这是否是问题的一部分)。

我做错了什么?

代码语言:javascript
复制
private void setupKeyBindings(final JList jlist) {
        String delAction = "deleteItems";
        KeyStroke delKey = KeyStroke.getKeyStroke("DELETE");
        jlist.getInputMap().put(delKey, delAction);
        jlist.getActionMap().put(delAction, new AbstractAction()
        {
            @Override public void actionPerformed(ActionEvent e) {
                System.out.println("delete pressed");
                doDelete(jlist);
            }
        });     

        String enterAction = "useItems";
        KeyStroke enterKey = KeyStroke.getKeyStroke("ENTER");
        jlist.getInputMap().put(enterKey, enterAction);
        jlist.getActionMap().put(enterAction, new AbstractAction()
        {
            @Override public void actionPerformed(ActionEvent e) {
                System.out.println("enter pressed");
            }
        });
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-03 08:41:08

嗯。我的Mac上的“删除”键似乎映射到了KeyListener键代码8,我认为这是退格键。(我的Mac键盘上只有一个Delete键,没有单独的退格键,而Windows PC键盘上两者都有)

以下内容似乎适用于Mac映射到Command-Delete:

代码语言:javascript
复制
KeyStroke delKey = KeyStroke.getKeyStroke(
   KeyEvent.VK_BACK_SPACE, InputEvent.META_MASK);
票数 8
EN

Stack Overflow用户

发布于 2012-11-09 07:39:45

代码语言:javascript
复制
KeyStroke.getKeyStroke("BACK_SPACE");

对我很管用。

票数 3
EN

Stack Overflow用户

发布于 2016-01-23 06:06:19

这并没有直接回答你的问题,但回答了我的问题:

代码语言:javascript
复制
deleteAction.putValue(
    javax.swing.Action.ACCELERATOR_KEY,
    KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)
);

您可以在此处找到其他KeyEvent整数常量:https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html

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

https://stackoverflow.com/questions/4881262

复制
相关文章

相似问题

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