Swing组件中有哪些隐藏的快捷方式?

4
我发现在我的JTextPane中使用Ctrl+Shift+O会改变组件的方向。
对于我的文本编辑器,我需要禁用这个快捷键,但是JTextPane或其他Swing组件中是否有其他快捷键呢?
已知键盘绑定Ctrl-XCtrl-CCtrl-V,还有更多吗?

1
抱歉,这是德语键盘的 Ctrl 键。 - oliholz
2
请查看此答案 http://stackoverflow.com/questions/3254637/how-do-i-stop-my-jtextpane-swallowing-keyboard-shortcuts-accelerators/3255444#3255444 - Bala R
2个回答

5

但是JTextPane或其他Swing组件中是否有其他快捷方式?

请参见键绑定,其中列出了所有绑定并显示如何禁用不需要的绑定。


太棒了,正是我正在寻找的!+1 - oliholz
@oliholz,听起来这就是正确的答案 - 请标记它! - Nate W.

2
尝试以下方法(我自己没有验证过):
myTextPane.getKeymap().removeKeyStrokeBinding(
    KeyStroke.getKeyStroke("ctrl shift O"));

这将从myTextPane中移除该加速器的绑定。

如果您想查找所有键绑定,只需遍历Keymap

for (KeyStroke stroke: myTextPane.getKeymap().getBoundKeyStrokes())
{
    Sytem.out.println(stroke.toString());
}

请注意,您还可以为所有文本组件禁用给定的KeyStroke
JTextComponent.getKeymap(JTextComponent.DEFAULT_KEYMAP).removeKeyStrokeBinding(
    KeyStroke.getKeyStroke("ctrl shift O"));

JTextComponent.DEFAULT_KEYMAP定义了默认情况下每个JTextComponent(包括子类如JTextPane)都使用的公共Keymap的名称。


1
应该可以工作(我也没有尝试过 :) - 但建议不要使用keyMaps,它们已经过时并且在InputMaps中内部包装(在第五层窗户外面倾斜得很远,应该_真的_检查一下;-) - kleopatra
2
尽管解决方案可能有效,但我们应该推广更新的API和编程实践。在JDK1.3中,键位映射被键绑定所取代。请参阅:http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html - camickr
1
@camickr 承认,但最好提到JTextComponent的javadoc没有提到Keymap被弃用或替换为键绑定。它甚至没有提到ActionMap/InputMap。阅读javadoc时,我甚至在想直接使用InputMap是否适用于此问题(我还没有尝试过)! - jfpoilpret
@camickr,那个报告已经从URL中消失了。幸运的是,它被Wayback Machine捕获了:快照。进行了几次搜索后发现,这可能是唯一一个对公众可见的幸存副本。 - Evgeni Sergeev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接