设置键盘快捷键的actionCommand

时间:2012-10-14 19:39:45

标签: java swing event-handling action undo-redo

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

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

如您所见,用户可以通过单击撤消按钮或按键盘上的 Ctrl + Z 来激活undo操作。我有兴趣看看为每个方法返回的action命令显示了什么。对于按钮单击,输出是明智的 - 它打印“撤消最后一点”。但是,对于键盘快捷键,它会向终端打印一个奇怪的2X2二进制数字网格。

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

我查找了InputMapActionMapKeyStroke的Java API,但未找到任何线索。也许问题在于我正在以完全错误的方式思考actionCommand是什么以及它是什么?

0 个答案:

没有答案