请原谅我可能有误导性的标题,但这个问题有点难以描述。
我目前正在尝试使用 Java 中的 JTextPane 创建一个基本的文本编辑器,但遇到了一个问题。
正如您在大多数文本编辑器中所知道的那样,您可以将插入符号/光标放在一段样式文本(例如粗体文本)后面,然后您可以继续输入相同的样式(例如附加更多粗体字符)。
幸运的是,这在 JTextPane 中默认存在,但我想为某种样式禁用它。主要是我编码的 URL 样式(基本上这个只是将样式中的 HTML.Attribute.HREF 属性设置为 URL)。
因此,如果我将插入符号放在作为 URL 的单词(或一段文本)后面,我想确保将要添加的下一个字符不会采用 URL 样式。
例如。我认为tinymce有这种行为:
- 你选择文字
- 单击插入 URL 按钮
- 插入网址
- 将光标放在 URL 之后,然后以正常样式再次开始输入
有没有办法在 JTextPane 中强制执行此行为?
我在想这样的事情:
- 为文档中的内容更改添加监听器
- 检查添加的字符是否放置在带有 URLstyle 的文本的后面
- 如果是这种情况=>从这些字符的样式中删除“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
提前致谢。