JEditorPane 中的超链接

2022-09-03 16:49:27

我在JEditorPane ex中显示了几个链接:

http://www.google.com/finance?q=NYSE:C

http://www.google.com/finance?q=NASDAQ:MSFT

我希望我应该能够单击它们,并且它显示在浏览器中

任何想法如何做到这一点?


答案 1

这有几个部分:

正确设置 JEditorPane

需要具有上下文类型,并且链接需要不可编辑才能可单击:JEditorPanetext/html

final JEditorPane editor = new JEditorPane();
editor.setEditorKit(JEditorPane.createEditorKitForContentType("text/html"));
editor.setEditable(false);

添加链接

您需要将实际标签添加到编辑器中,以便将它们呈现为链接:<a>

editor.setText("<a href=\"http://www.google.com/finance?q=NYSE:C\">C</a>, <a href=\"http://www.google.com/finance?q=NASDAQ:MSFT\">MSFT</a>");

添加链接处理程序

默认情况下,单击链接不会执行任何操作;你需要一个超链接列表来处理它们:

editor.addHyperlinkListener(new HyperlinkListener() {
    public void hyperlinkUpdate(HyperlinkEvent e) {
        if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
           // Do something with e.getURL() here
        }
    }
});

如何启动浏览器进行处理取决于您。如果您使用的是 Java 6 和支持的平台,一种方法是使用 Desktop 类:e.getURL()

if(Desktop.isDesktopSupported()) {
    Desktop.getDesktop().browse(e.getURL().toURI());
}

答案 2