【问题标题】:How to implement an auto-complete for a text editor written in java?如何为用java编写的文本编辑器实现自动完成?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 1970-01-01
    • 2011-09-22
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2010-09-10
    相关资源
    最近更新 更多