我有一个扩展 JTextField 的类,我想让 CTRL-Shift-O 做一些事情。我一直在听
JTextFieldExtension.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e)
{
}
}
在 e.isControlDown() 和 e.isShiftDown() 的帮助下,效果很好。但我注意到该字段中的文本也从左侧移动到右侧。显然这是 JTextField 的默认行为。所以我在 SO 上发现了这个似乎很有帮助的线程:
从那个线程,调用jtextField.getInputMap().setParent(null); 确实停用了该行为。但它也摆脱了 Ctrl-C 和其他我仍想保留的有用映射。所以我尝试了建议的方法来删除 KeyStroke“ctrl shift O”。但它们似乎都不起作用。
目前在类的构造函数中,我有以下内容:
this.getInputMap().put(KeyStroke.getKeyStroke("shift ctrl pressed O"), null);
KeyStroke[] strokes = this.getInputMap().allKeys();
for (KeyStroke ks : strokes)
{
System.out.println(ks.toString());
}
尽管 System.out.Println 显示“shift ctrl press O”作为它列出的 allKeys 之一,但它不起作用。我也尝试调用 InputMap.remove 而不是 Put(),但没有成功。
我错过了什么?