【问题标题】:displaying links in java's JTextPane without html在没有 html 的 java 的 JTextPane 中显示链接
【发布时间】:2009-07-30 08:07:17
【问题描述】:

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

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

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

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

有没有人这样做过。有什么建议吗?转成html好还是自定义显示好?

【问题讨论】:

    标签: java html swing jeditorpane jtextpane


    【解决方案1】:

    我不确定如何用“
    ”替换换行符。有没有简单的方法可以做到这一点?

    您可以使用 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>");
    

    【讨论】:

    • +1 @Victor:这是正确的。处理超链接应该非常相似:用
    • 我尝试了字符串替换方法,但没有奏效。这行得通,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2011-11-09
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多