作为注释程序的一部分,我有一段代码负责撤消绘制在图像上的最后一点:
Action undoListener = new AbstractAction(){
public void actionPerformed(ActionEvent actionEvent){
System.out.println(actionEvent.getActionCommand());
imagePanel.undoLastPoint();
}
};
JButton undoPointButton = new JButton("Undo Last Point");
undoPointButton.addActionListener(undoListener);
KeyStroke ctrlZKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK);
JPanel thisContentPane = (JPanel)this.getContentPane();
thisContentPane.getInputMap().put(ctrlZKeyStroke, "undo");
thisContentPane.getActionMap().put("undo", undoListener);
如您所见,用户可以undo
通过单击撤消按钮或按键盘上的Ctrl+来激活操作。Z我很想看看为这些方法中的每一个返回的操作命令显示了什么。对于按钮单击,输出是明智的 - 它打印“撤消最后一点”。然而,对于键盘快捷键,它会向终端打印一个奇怪的 2X2 二进制数字网格。
我想知道是否有一种方法可以显式设置键盘快捷键返回的操作命令,因为区分两者或显示它们代表相同的东西可能很有用。
我已经在 Java API 中查找了InputMap
、ActionMap
和 ,KeyStroke
但没有找到任何线索。也许问题在于我正在actionCommand
以完全错误的方式思考什么是什么以及它的用途是什么?