0

作为注释程序的一部分,我有一段代码负责撤消绘制在图像上的最后一点:

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 二进制数字网格。

我想知道是否有一种方法可以显式设置键盘快捷键返回的操作命令,因为区分两者或显示它们代表相同的东西可能很有用。

我已经在 J​​ava API 中查找了InputMapActionMap和 ,KeyStroke但没有找到任何线索。也许问题在于我正在actionCommand以完全错误的方式思考什么是什么以及它的用途是什么?

4

0 回答 0