java - 在java的JTextPane中显示没有html的链接

标签 java html swing jeditorpane jtextpane

我需要从源中获取文本作为纯文本并将其显示在 JTextPane 或 JEditorPane 中。源文本不是 HTML,但将包含方括号之间的 URL,需要显示这些 URL 并用作超链接。

我考虑过将 Pane 的内容类型设置为 text/html 并围绕 html 标签中的 url,但这最终会忽略换行符,这是一件坏事,而且我不知道如何去替换换行符带有“<br/>”的字符。有没有简单的方法可以做到这一点?

如果这样做意味着扫描整个字符串,那么自定义文本的显示方式不是更好吗?

所以我也考虑了制作我自己的 EditorKit 的路线,就像 this thread 中提到的 starturtle 一样。 ,但他没有解释如何做到这一点。我查看了 this article 中的代码,但是看起来工作量很大,这是我应该走的路线吗?

有人曾经这样做过吗?有什么建议吗?转换为html好还是自定义显示好?

最佳答案

i'm not sure how to go about replacing newline characters with "<br/>". Is there an easy wat to do that?

您可以使用 Java 正则表达式来做到这一点:

    String raw = "...";
    Pattern p = Pattern.compile("\n");
    String html = "<HTML>" + p.matcher(raw).replaceAll("<BR>") + "</HTML>" ;

我冒昧地为您添加了 HTML 包装器。

<小时/>

编辑:

为了好玩,我接受了奥斯卡的观点并尝试了一下:

    Pattern p = Pattern.compile("\\[([^\\]]*)\\]");
    raw = p.matcher(raw).replaceAll("<a href=\"$1\">$1</a>");

关于java - 在java的JTextPane中显示没有html的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197580/

相关文章:

javascript - 模拟固定的侧边栏模板问题

java - 如何使用按钮向 JFrame 添加 1 个绘图?

java - 如何通过使用谷歌集合提供 List<X> 从 Map<X,Y> 获取 List<Y>?

java - 自定义 JTabbedPane

java - 如何在Java中将8个字符的字符串转换为ARGB颜色格式?

java - 如何在 JavaFX 中处理来自另一个类的事件?

html - 在 HTML 元素中 float 的 CSS3 动画

html - 如何使用CSS制作不同的翻转动画?

java - 解释 Runnable 和 Invoke()

java - JFrame 过渡效果 - 当调用 setState(Frame.ICONIFIED) 时,它只是转到任务栏而没有动画