【发布时间】:2012-01-30 18:54:44
【问题描述】:
我正在尝试创建一个文本编辑器,例如使用 java 在 mips 程序集中进行编码的程序,我有点搞混的部分是我试图提供像 eclipse 一样的控制空间功能。例如,当用户输入 add $s1 ,然后按 ctrl+Space ,我会用他输入的内容替换这个字符串:"add $s1 , $s2 , $s3"! (这是一个例子..我知道 add 可以是立即类型指令:D),我正在使用哈希映射将击键绑定到我的 JTextPane 中实际发生的事情,比如:
InputMap inputMap = textPane.getInputMap();
KeyStroke key = KeyStroke.getKeyStroke('some keys') ;
inputMap.put(key, 'some action') ;
问题是,当我想为我的程序实现 Ctrl+Space 时,我正在使用这个:
key = KeyStroke.getKeyStroke(Event.CTRL_MASK , KeyEvent.VK_SPACE) ;
inputMap.put(key, DefaultEditorKit.insertContentAction);
但是我在哪里可以选择,应该插入什么字符串而不是模式中已经输入的部分?换句话说,insertContentAction 从哪里获取字符串?我如何定义应该替换的字符串?甚至当按下 Ctrl+Space 时,还有其他更好的替换方法吗?
(我要求的是一种将字符串模式插入 jTextPane 的方法,而不是实现模式匹配的算法)
在此先感谢:)
【问题讨论】:
-
我认为你不应该使用
insertContentAction。您必须将快捷方式链接到您自己的Action子类,该子类将完成插入到文档中。 -
@Inerdial 是的,我想这就是这样做的方法,但是你能举一个将动作链接到快捷方式的例子吗?
-
Swing 教程中有一个关于键绑定的部分:docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html
标签: java swing autocomplete jtextpane