如何在JTextField中禁用默认文本字段快捷方式

我有一个自定义文本域类,它扩展了Swing中的JTextField类。

我需要找到一种方法来禁用Ctrl-A(全选),Ctrl-H(退格键等)的默认操作,以便包含文本字段的窗口可以将这些快捷方式映射到它想要的任何内容。

任何帮助将不胜感激。

好的,我自己找到了答案:

将以下内容添加到textfield类的启动方法中:

this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK), "none"); 

结果是文本字段忽略了快捷方式,并将按键传递到窗口中的快捷方式处理程序。

如何制作和删除键绑定将有助于您实现。

要删除所有默认键绑定,只需取消引用其父InputMap。

 jtextField.getInputMap().setParent(null); 

但它删除了所有键绑定,因此您无法键入任何字符。 JTextField的输入有3个父项。 因此,您可以更好地覆盖特定的键绑定,如下所示。

 InputMap inputMap = jtextfield.getInputMap(); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.CTRL_DOWN_MASK), "foo"); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.META_DOWN_MASK), "foo"); 

也许你应该处理KeyMap 。