如何为用java编写的文本编辑器实现自动完成?
我正在尝试创建一个文本编辑器,比如使用java在mips程序集中进行编码的程序,我混淆了这一点我试图提供像eclipse那样的控制空间function。例如当用户输入时add $s1
,然后按ctrl + Space,我将替换此字符串: "add $s1 , $s2 , $s3"
与他输入的内容! (这是一个例子..我知道add可以是直接类型指令:D),我正在使用hashmap将键击绑定到我的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从哪里带来字符串? 我该如何定义应该替换哪些String? 当按下Ctrl + Space时,甚至还有其他更好的替换方法吗? (我要求的是一种将字符串模式插入jTextPane的方法,而不是实现模式匹配的算法)
提前致谢 :)
您可以获取文本窗格的Document
以进行严格控制的更改,例如这些。 该Document
还有一些您可以自己监听的有用事件。