swing如何为用java编写的文本编辑器实现自动完成?
我正在尝试创建一个类似文本编辑器的程序,用于使用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从何而来?如何定义应替换的字符串?或者,当按下Ctrl+Space时,还有其他更好的替换方法吗?
(我想要的是一种将字符串模式插入jTextPane的方法,而不是实现模式匹配的算法)
提前感谢:)
# 1 楼答案
您可以get文本窗格的^{} 进行严格控制的更改,例如:。
Document
也有一些有用的事件,您可以监听