我有一个自定义的textfield类,它在Swing中扩展了JTextField类。
我需要找到一种方法来禁用Ctrl-A(全选),Ctrl-H(退格键等)的默认操作,以便包含文本字段的窗口可以将这些快捷方式映射到它想要的任何内容。
非常感谢任何帮助。
答案 0 :(得分:4)
好的,我自己找到了答案:
在textfield类的启动方法中添加了以下内容:
this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK), "none");
效果是文本字段忽略了快捷方式,并将按键传递到窗口中的快捷方式处理程序。
答案 1 :(得分:1)
How to make and remove key bindings可以帮助您实施。
要删除所有默认键绑定,只需取消引用其父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");
答案 2 :(得分:0)
也许你应该处理KeyMap。