【发布时间】:2012-09-19 21:11:27
【问题描述】:
好的,我们又来了。史蒂夫必须编写另一组非标准击键。 我们在 JScrollPane 中嵌入了一个可编辑的 JTextPane。此窗格正确处理向上和向下箭头键,但我不知道如何。如果我能弄清楚如何,我可以实现我需要实现的非标准事物。
具体来说,因为 PageDown 键被全局映射到执行另一个功能,我们不执行 PageUp、PageDown、Ctrl-PageUp 和 Ctrl-PageDown 的默认操作。相反,我们希望将这些功能映射到移动的箭头键,而不是数字键盘上的那些。
具体在 JScrollPane 类的祖先输入映射 ((InputMap)UIManager.get("ScrollPane.ancestorInputMap");) 我们添加
- 向下移动箭头键指向祖先输入映射 “向下滚动”操作
- 向上移动箭头键指向 Ancestor 输入映射,指向 “向上滚动”操作
- 将左箭头键移到 Ancestor 输入映射,指向 “scrollHome”操作
- 将右箭头键移到 Ancestor 输入映射,指向 “scrollEnd”动作
这些按键都没有任何作用。我什至重写了 JComponent 的 processKeyEvent() 和 processKeyBinding() 方法来记录发生的事情,我发现这些击键永远不会触发这些方法。此外,普通的标准向上箭头和向下箭头击键不会触发这些方法,即使这些击键确实有效。
所以很明显,其他东西正在处理这些击键。但那是什么组件? 是的,当我尝试这个时,文本窗格确实有焦点。
【问题讨论】:
-
尽快发布SSCCE 以获得更好的帮助。
-
也许,但总的来说,在正常的 Swing 中,与我可怕的混蛋版本相反,哪个组件处理箭头键?是滚动条、滚动窗格还是文本窗格?
-
另见Key Bindings,其中列出了每个 L&F 的默认值。
-
睡觉时间,关于具体 L&F 的键和差异的精彩评论
-
@trashgod - 是的,在这种情况下,键绑定始终是我的第一站,事实上我已经去过那里。你认为我怎么知道输入地图和动作的名称?但在这种情况下,这并没有回答我的问题。
标签: java swing jscrollpane key-bindings