3

Java tuturial说“要使组件忽略它通常响应的键,您可以使用特殊操作名称“none”。例如,以下代码使组件忽略 F2 键:

component.getInputMap().put(KeyStroke.getKeyStroke("F2"), "none");

"

还有一种方法getInputMap().remove(KeyStroke.getKeyStroke("F2"));

有什么区别?为什么要使用第一种方法?

4

1 回答 1

2

为了扩展 VGR 的评论,使用“none”只会影响单个组件。在组件 InputMap 上使用 remove() 也只会影响该组件。

您还可以remove从 LAF InputMap 进行绑定:

component.getInputMap().getParent().remove(...);

在这种情况下,该类的所有组件的绑定都将被删除。这将影响您的应用程序中已创建或将要创建的任何组件。

您可以使用特殊操作名称“无”。

此外,“无”不是一个特殊的名称。它只是在 ActionMap 上进行查找时使用的值。如果使用此值未找到任何操作,则不会发生任何事情。

于 2013-09-07T02:40:36.333 回答