好的,我们又来了。史蒂夫必须编写另一组非标准击键。我们在 JScrollPane 中嵌入了一个可编辑的 JTextPane。此窗格正确处理向上和向下箭头键,但我不知道如何。如果我能弄清楚如何,我可以实现我需要实现的非标准事物。
具体来说,因为 PageDown 键被全局映射到执行另一个功能,我们不执行 PageUp、PageDown、Ctrl-PageUp 和 Ctrl-PageDown 的默认操作。相反,我们希望将这些功能映射到移动的箭头键,而不是数字键盘上的那些。
特别是在 JScrollPane 类的祖先输入映射 ((InputMap)UIManager.get("ScrollPane.ancestorInputMap");) 我们添加
- 向下移动箭头键到指向“scrollDown”动作的祖先输入映射
- 向上移动箭头键到指向“scrollUp”动作的祖先输入映射
- 将左箭头键移到指向“scrollHome”操作的祖先输入映射
- 将右箭头键移到指向“scrollEnd”操作的祖先输入映射
这些击键都没有任何作用。我什至重写了 JComponent 的 processKeyEvent() 和 processKeyBinding() 方法来记录发生的事情,我发现这些击键永远不会触发这些方法。此外,普通的标准向上箭头和向下箭头击键不会触发这些方法,即使这些击键确实有效。
因此,似乎很明显其他东西正在处理这些击键。但那是什么组件?是的,当我尝试这个时,文本窗格确实有焦点。