Java 哪一个更好:getInputMap()。删除(..)或将操作设置为";没有;?

Java 哪一个更好:getInputMap()。删除(..)或将操作设置为";没有;?,java,swing,keystroke,Java,Swing,Keystroke,表示“要使组件忽略其正常响应的键,可以使用特殊操作名称“none”。例如,以下代码使组件忽略F2键: component.getInputMap().put(KeyStroke.getKeyStroke("F2"), "none"); " 还有一个方法getInputMap().remove(KeyStroke.getKeyStroke(“F2”)) 有什么区别?为什么要使用第一种方法?要对VGR的注释进行一点扩展,使用“无”只会影响单个组件。在组件InputMap上使用remove()也只会

表示“要使组件忽略其正常响应的键,可以使用特殊操作名称“none”。例如,以下代码使组件忽略F2键:

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

还有一个方法
getInputMap().remove(KeyStroke.getKeyStroke(“F2”))


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

要对VGR的注释进行一点扩展,使用“无”只会影响单个组件。在组件InputMap上使用remove()也只会影响该组件

您还可以从LAF InputMap中删除绑定:

component.getInputMap().getParent().remove(...);
在这种情况下,将删除该类的所有组件的绑定。这将影响应用程序中已创建或将创建的任何组件

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


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

这可能与每个组件有3个输入映射有关。我猜“无”是更好的选择,因为
getInputMap()
返回一个通常为空的InputMap,其父级是外观安装的InputMap。因此,调用
remove
将删除您的自定义密钥绑定,但不会禁用look and feel安装的F2的任何绑定。我想这就是我问题的答案。当然,这取决于使用哪种方法的情况。