table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("ENTER"), "none");
让我们把这行代码分成两步。
步骤1:
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
每个 JComponent 都有几个InputMaps. AnInputMap基本上是一种映射KeyStrokes到动作的方式。
该getInputMap()方法接受一个参数condition,它可以是三个值之一WHEN_IN_FOCUSED_WINDOW,WHEN_FOCUSED和WHEN_ANCESTOR_OF_FOCUSED_COMPONENT。这些是在JComponent类中声明的常量,并且对应于组件可以处于的不同状态。A对每个状态JComponent都有一个。InputMap因此InputMap,聚焦的组件与未聚焦但位于窗口内的组件不同。
--请注意,getInputMap()不带参数的调用只是getInputMap(WHEN_FOCUSED). --
第2步:
.put(KeyStroke.getKeyStroke("ENTER"), "none");
既然我们有权利InputMap,我们想把东西放进去吧!?那么我们在里面放什么呢?嗯,它是一张地图,所以它需要一个key和一个value。
在 anInputMap中,键是 a KeyStroke,在这种情况下,我们通过调用 来指定 ENTER 键KeyStroke.getKeyStroke("ENTER")。
值是 a String,它给出了a的名称Action。
AnInputMap通常与 an 一起使用ActionMap。an 中的值是 an中InputMap的键ActionMap。我们为我们InputMap提供了value "none",并且由于 没有包含Action调用,所以什么都不会发生。"none"ActionMap
所以,总而言之,我们已经告诉了当按下 ENTER 键时JTable什么都不做。
更多关于键绑定的信息在这里。
我希望这有帮助 :)