编程语言
首页 > 编程语言> > Java Swing中删除的KeyStroke

Java Swing中删除的KeyStroke

作者:互联网

我正在尝试使用InputMap / ActionMap拦截删除键.我让它与Enter一起工作,但它似乎没有回复删除(这是在Mac OSX上,所以我想知道这是否是问题的一部分).

我究竟做错了什么?

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");
            }
        });
    }

解决方法:

嗯.我的Mac上的“删除”键似乎映射到KeyListener键码8,我认为它是退格键. (在我的Mac键盘上只有一个删除键,而不是一个单独的退格键,而对于同时具有两者的Windows PC键盘)

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

KeyStroke delKey = KeyStroke.getKeyStroke(
   KeyEvent.VK_BACK_SPACE, InputEvent.META_MASK);

标签:java,macos,keyboard-events
来源: https://codeday.me/bug/20190717/1483416.html