为什么我们必须使用额外的对象ActionMap
什么意思?

以此为例:

imap.put(KeyStroke.getKeyStroke("ctrl Y"), "panel.yellow");

ActionMap amap = panel.getActionMap();

amap.put("panel.yellow", yellowAction);

最佳答案

如此example中所示,InputMapKeyStroke与标识相应的Action的抽象名称相关联。 ActionMap使用该名称作为键来调用特定Action实例的actionPerformed()方法。作为一个具体示例,此ScrollTimer使用ActionMapJScrollPane来按名称查找动作,并在不直接访问实现的情况下使用它们。

附录:此抽象旨在支持"pluggable look and feel"(L&F)体系结构here

关于java - 为什么InputMap方法不直接将击键对象映射到 Action 对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13391126/

10-10 17:01