JOptionPane中ArrayList的可点击链接

时间:2017-12-05 19:09:52

标签: java joptionpane

我试图在Browser class(在eclipse中创建)中实现历史记录按钮,我希望按钮中的链接可以点击。以下是用户按下按钮History时启动的代码:

private void showMessage() {
    try {
        String message = new String();
        message = history.toString();
        JOptionPane.showMessageDialog(null, message);
    } catch (NullPointerException e) {
        System.out.println("Something is wrong with your historylist!");
    }
}

在上面的代码中,history是包含之前访问过的所有网页的列表。

我尝试过使用此处提供的方法: clickable links in JOptionPane,我得到了它的工作。问题是,这个解决方案只允许我预定义URL:s,但我希望显示我的列表history,并且其中的URL可以点击。

例如,如果我访问了https://www.google.comhttps://www.engadget.com,则列表将如下所示:history = [www.google.com, www.engadget.com],并且两个链接都应单独点击。

1 个答案:

答案 0 :(得分:0)

当有人按下history - 按钮时,应该调用此功能。它使用JEditorPaneHyperlinkListener。下面代码中的字符串html会添加所需的html编码,以便HyperlinkListener可以阅读并访问网页。

public void historyAction() {
    String html = new String();
    for (String link : history) {
        html = html + "<a href=\"" + link + "\">" + link + "</a>\n";
    }
    html = "<html><body" + html + "</body></html>";
    JEditorPane ep = new JEditorPane("text/html", html);
    ep.addHyperlinkListener(new HyperlinkListener() {
        public void hyperlinkUpdate(HyperlinkEvent e) {
            if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
                loadURL(e.getURL().toString());
            }
        }
    });
    ep.setEditable(false);
    JOptionPane.showMessageDialog(null, ep);
}