我正在尝试使用InputMap/ActionMap截取delete键。我让它与Enter一起工作,但它似乎没有delete响应(这是在Mac上,所以我想知道这是否是问题的一部分)。
我做错了什么?
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");
}
});
}发布于 2011-02-03 08:41:08
嗯。我的Mac上的“删除”键似乎映射到了KeyListener键代码8,我认为这是退格键。(我的Mac键盘上只有一个Delete键,没有单独的退格键,而Windows PC键盘上两者都有)
以下内容似乎适用于Mac映射到Command-Delete:
KeyStroke delKey = KeyStroke.getKeyStroke(
KeyEvent.VK_BACK_SPACE, InputEvent.META_MASK);发布于 2012-11-09 07:39:45
KeyStroke.getKeyStroke("BACK_SPACE");对我很管用。
发布于 2016-01-23 06:06:19
这并没有直接回答你的问题,但回答了我的问题:
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
https://stackoverflow.com/questions/4881262
复制相似问题