【问题标题】:Displaying links in Java components在 Java 组件中显示链接
【发布时间】:2012-01-05 15:02:05
【问题描述】:

我想在一个 java 组件中显示一个链接列表,不管它是什么组件。 链接是指某些网站的 URL。 可以单击这些链接,然后在默认网络浏览器中打开选定的 URL,例如 google chrome / firefox(我不想在 java 中显示网页,只有链接)。

我已经知道如何显示单个链接,但是在显示链接列表时遇到了问题。我试着这样做:

 public void appendTextToJEditorPane(String text) {

    try {
        Document doc = jEditorPane1.getDocument();
        String newLine = "\n";

        String url = "<html><a href=" + text + ">" + text + "<//a><//html>.";

        doc.insertString(doc.getLength(), url, null);
        doc.insertString(doc.getLength(), newLine, null);

    } catch (BadLocationException exc) {
        exc.printStackTrace();
    }


}

    appendTextToJEditorPane("http://google.pl");
    appendTextToJEditorPane("http://wp.pl");
    appendTextToJEditorPane("http://onet.pl");

但由于 html 结束标记中的“/”有问题,它不起作用。我在 JEditorPane 中得到纯文本。如何正确添加链接?

【问题讨论】:

  • 没关系 - 可以是 JTextPane、JTextArea、JEditorPane、List..

标签: java html swing hyperlink


【解决方案1】:

如果您可以制作链接的 HTML 并在 JEditorPane 中打开此页面,将帮助您减少代码并实现您的要求。

我希望这对你有用。

【讨论】:

    【解决方案2】:

    在 Swing 中,可以将 HTML 格式的文本放在组件上。因此,使您的文本 ... 就足够了。
    否则,您必须实现一个打开浏览器的 ActionListener。您可以使用Desktop.browse(URI) 方法来做到这一点。

    【讨论】:

    • 谢谢。这是正确的,但我在获得最新的 linux ubuntu 版本支持桌面时遇到了问题。方法 Desktop.isSupported() 返回 false,我不知道如何修复它,因为我不是 linux 专家。有什么想法吗?
    • 我不知道,但其他人可能会。对于关于 SO 的另一个问题,这听起来像是很好的材料。
    【解决方案3】:

    如果您使您的组件可点击,您可以使用 URL 从程序中打开浏览器。具体见java.lang.Desktop,浏览方法。

    【讨论】:

    • 如何使组件可点击?什么财产对此负责?
    • 你添加一个 MouseListener 到你的组件或者 ActionListener 应该是一个按钮,当你打开浏览器的事件调用监听器时。
    • 我从您的其他答案中看到您在桌面支持方面遇到了问题。奇怪的。可以使用 java.lang.Process 直接调用您的浏览器,但我现在不明白为什么。我假设您正在使用图形显示运行。
    【解决方案4】:

    您可以在 JLabel 组件中使用 html。这意味着您也可以通过 a-href 使用链接。

    label.setText("<html><a href="your-link">link</a></html>.")
    

    【讨论】:

    • 这适用于单个链接。例如我做这样的事情: String url = "google.com"; jEditorPane1.setText("" + url + " .");但是如何附加更多链接?
    • 我谈到了 JLabel 而不是 JEditorPane,但它似乎也适用于其他组件。解决方案:在 标签之间包含您的链接。在一个 setText 方法中。使用 StringBuilder 构建带有链接的 html 文本的好方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    相关资源
    最近更新 更多