如何为用java编写的文本编辑器实现自动完成?

时间:2012-01-27 11:59:41

标签: java swing autocomplete jtextpane

我正在尝试创建一个文本编辑器,比如使用java编写mips程序集的程序,我混淆了这一点我试图提供像eclipse那样的控制空间功能。例如当用户输入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的方法,而不是实现模式匹配的算法)
在此先感谢:)

1 个答案:

答案 0 :(得分:1)

您可以get文本窗格的Document进行严格控制的更改,例如这些。 Document还有一些你可以听的有用事件。