我试图在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.com和https://www.engadget.com,则列表将如下所示:history = [www.google.com, www.engadget.com]
,并且两个链接都应单独点击。
答案 0 :(得分:0)
当有人按下history
- 按钮时,应该调用此功能。它使用JEditorPane
和HyperlinkListener
。下面代码中的字符串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);
}