在JTable中删除标准回车键绑定(按Enter选择下一行)的最简单,最快的方法是什么?
那就是我尝试过的
table.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), null);
但这是行不通的。我假设我们必须对每个单元格而不是表本身执行某种方式。
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
并JComponent.WHEN_IN_FOCUSED_WINDOW
具有输入击键的值。所以你想两者都得到
更正:你需要得到InputMap
的WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
InputMap iMap1 =
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
//InputMap iMap2 =
// table.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
然后,您想要将映射的值设置为"none"
,而不是null
如如何使用键绑定中所述。
要使组件忽略其通常响应的键,可以使用特殊操作名称“ none”。例如,以下代码使组件忽略F2键。
component.getInputMap().put(KeyStroke.getKeyStroke("F2"), "none");
所以做:
KeyStroke stroke = KeyStroke.getKeyStroke("ENTER");
iMap1.put(stroke, "none");
//iMap2.put(stroke, "none");
另请注意,当您不getInputMap()
带任何参数时,基本上与相同getInputMap(JComponent.WHEN_FOCUSED)
。在这种情况下JTable
,Enter键没有任何价值InputMap
。
在如何使用键绑定中了解更多信息。您将对不同之处有更好的解释InputMaps
更新:改正(以上删除的或删除的改正// commented out
)
您只需将其设置InputMap
为JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
根据OP注释进行更新:简而言之,是
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("ENTER"), "none");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句