gpt4 book ai didi

java - 删除 JTable 中的 Enter 键绑定(bind)

转载 作者:行者123 更新时间:2023-11-29 03:17:22 26 4
gpt4 key购买 nike

在 JTable 中删除标准回车键绑定(bind)(按回车键选择下一行)的最简单且最快的方法是什么?

这就是我尝试过的

table.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), null);

但它不起作用。我假设我们必须以某种方式为每个单元格而不是表格本身执行此操作。

最佳答案

JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENTJComponent.WHEN_IN_FOCUSED_WINDOW 具有输入键击的值。所以你想得到他们两个

更正:您需要为 WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 获取 InputMap

InputMap iMap1 = 
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
//InputMap iMap2 =
// table.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);

然后您希望将 map 的值设置为"none",而不是null,如How to Use Key Bindings 中所述.

To make a component ignore a key that it normally responds to, you can use the special action name "none". For example, the following code makes a component ignore the F2 key.

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 的情况下,InputMap 的回车键没有任何值。

阅读更多信息 How to Use Key Bindings .您将更好地解释不同的 InputMaps


更新:更正(以上所做的更正删除//注释掉)

您只需为 JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENTInputMap 设置它


更新 根据 OP 评论:简而言之是的

table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.‌​getKeyStroke("ENTER"), "none");

关于java - 删除 JTable 中的 Enter 键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com