java - 在 JEditorPane 中实现即时文本样式

标签 java swing text text-editor

我有一个想法,用 Java 编写一个笔记应用程序,在您键入时进行一些简单的文本替换;可能是 Markdown 语法的一小部分。因此,例如,如果您输入了一行#sometext,它将被渲染:

一些文本

Wikidpad是我正在尝试做的事情的一部分(我不只是重新实现它,只是语法/显示功能的一部分)。

所以基本上我正在寻找一种方法来编写某种组件,当用户点击 “return”,它将查看输入的行并执行任何它需要执行的操作以使 html 标记正确。

我一直在与 Documents 和 DocumentFilters 以及 DocumentListeners 和 HTMLReaders 等打交道,但运气不佳,任何人都可以让我走上正确的道路吗?

最佳答案

您感兴趣的是java text editor kit .本教程很棒,帮助我实现了一个与您的问题相似的 wiki 编辑器。 swing Editor 工具包(信不信由你)专为解决您的问题而设计。我已经使用这种技术编写了一个类似于链接系统的动态 wiki,尽管并非没有很多困难。这是我必须做的:

  1. 制作文档 第一项任务是创建一个文档模型,在识别文本时标记模式。如果您查看链接示例中的 JavaDocument,则会有一个 insertUpdate 调用。在文档中您可以找到您正在寻找的模式并将其替换为合适的自定义样式。本质上,您只是创建一个样式并将其应用到匹配模式的文档中。更新方法的替代方法是使用私有(private)工作线程定期扫描新的 wiki 内容。

  2. 构建呈现上下文 在您的模型完成后,您可以实现一个上下文来构建适合呈现新文本的 View 。在链接示例中,它们扩展了 StyleContext。这是用于将文本呈现给 View 的内容。您可以在此处设置渲染规则,以查找您的特定标签并执行一些操作,例如在其下划线和删除方括号。

  3. 制作一个编辑器工具包这会将所有内容拼接在一起并确定文档的内容类型。

将文档和 View 保持为单独的上下文的好处是您可以将文档附加到两个 View ,一个是纯文本,另一个在您的新自定义上下文中。由于默认样式无法识别您的标签,因此它应该以原始 wiki 代码形式显示它。新 View 会将 View 转换为适当的链接。

希望对您有所帮助。提醒一句,不幸的是,这东西很复杂,即使是 Swing 。祝你好运!

关于java - 在 JEditorPane 中实现即时文本样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1489237/

相关文章:

java - 棋局设计与单例模式

java - 我正在尝试使用 MouseMotionListener 将数据从 JTable 打印到命令行

ios - UILabel AutoResize 切掉文本的顶部

java - 在jsf中以2点小数格式显示数字

java - 支持数学符号和公式的 Java/Javascript MediaWiki 渲染器

java - FirebaseNetworkException 无法转换为 com.google.firebase.auth.FirebaseAuthException

java - PaintComponent 中使用 BorderFactory 的图形工件

java - 有谁知道Eclipse菜单栏中使用的是什么字体?

Java Applet 翻转时文本突出显示

javascript - 在Extjs中创建一个没有字段的只读文本字段