【发布时间】:2013-05-14 22:29:32
【问题描述】:
请原谅我的标题可能具有误导性,但问题有点难以描述。
我目前正在尝试使用 Java 中的 JTextPane 创建一个基本的文本编辑器,但遇到了问题。
正如您在大多数文本编辑器中所知道的,您可以将插入符号/光标放在一段样式文本(例如粗体文本)后面,然后您可以继续以相同的样式输入(例如附加更多粗体字符)。
幸运的是,这在 JTextPane 中默认存在,但我想为某种样式禁用它。主要是我编码的 URL 样式(基本上这个只是将样式中的 HTML.Attribute.HREF 属性设置为 URL)。
因此,如果我将插入符号放在作为 URL 的单词(或一段文本)后面,我想确保将要添加的下一个字符不会采用 URL 样式。
例如。我认为tinymce 有这种行为:
- 您选择文字
- 单击“插入 URL”按钮
- 插入网址
- 将光标放在 URL 之后,然后以正常样式再次开始输入
有没有办法在 JTextPane 中强制执行此行为?
我在想这样的事情:
- 为文档中的内容更改添加监听器
- 检查添加的字符是否位于带有 URL 样式的文本的正后方
- 如果是这种情况 => 从这些字符的样式中删除“href”属性
可以在下面找到我用于将 URL 样式设置为所选文本的代码。 "dot" 和 "mark" 是从插入符号中检索出来的。
SimpleAttributeSet attr = new SimpleAttributeSet(doc.getCharacterElement(dot).getAttributes());
StyleConstants.setUnderline(attr, true);
StyleConstants.setForeground(attr, Color.BLUE);
attr.addAttribute(HTML.Attribute.HREF, url);
doc.setCharacterAttributes((dot < mark) ? dot : mark, length, attr, true);
(注意:为了能够区分普通的“蓝色下划线”文本和 URL,HREF 属性用于 URL。)
PS:这是我在这里的第一个问题,所以希望我提供了足够的信息。 ;)
语言:Java、JDK 1.7
提前致谢。
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
好的,谢谢,记住了。
标签: java swing url text jtextpane