gpt4 book ai didi

java - HyperLinkListener 未触发 - java swing

转载 作者:行者123 更新时间:2023-12-01 11:17:16 24 4
gpt4 key购买 nike

我正在尝试实现带有超链接的 JEditorPane。我正在使用 HyperLinkListener,但它似乎永远不会触发。

代码:

JEditorPane editorPane = new JEditorPane("text/html", programInfo);

editorPane.addHyperlinkListener(e -> {
System.out.println("CLICK");
if (e.getEventType().equals(HyperlinkEvent.EventType.ENTERED))
try {
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().browse(e.getURL().toURI());
}
} catch (IOException e1) {
e1.printStackTrace();
} catch (URISyntaxException e1) {
e1.printStackTrace();
}
});

JOptionPane.showMessageDialog(contentPane, editorPane);

示例 HTML:

 <body>
<p><b>Author:</b> James - <a href="http://www.sample.co.uk">sample</a></p>
</body>

这导致了这个:

Imgur upload of JEditorPane

但是当我点击链接时什么也没有发生。

其他信息:

我正在 Ubuntu 14.04 上对此进行测试。我已将外观设置为系统。

最佳答案

编辑:感谢@AndrewThompson 找到了真正的问题。它不触发事件的原因是编辑器 Pane 仅在不可编辑时才会触发事件。因此,为了使您的代码正常工作,您应该在构建 editorPane 之后添加此行:

editorPane.setEditable(false);

下面您可以找到一个独立的示例:

public class TestFrame extends JFrame {

public static void main(String[] args) {

JEditorPane editorPane = new JEditorPane("text/html", "test <a href=\"http://example.com\">link to example.com</a>");
editorPane.addHyperlinkListener(new HyperlinkListener() {
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
System.out.println("CLICK");
if (e.getEventType().equals(HyperlinkEvent.EventType.ENTERED)) try {
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().browse(e.getURL().toURI());
}
}
catch (IOException e1) {
e1.printStackTrace();
}
catch (URISyntaxException e1) {
e1.printStackTrace();
}
}
});
editorPane.setEditable(false); // otherwise ignores hyperlink events!

JFrame frame = new JFrame("EditorPane Example");
frame.add(editorPane);
frame.setSize(300,200);
frame.setVisible(true);
} }

(抱歉,我删除了 lambda,因为我这台 PC 上没有 jdk8)

关于java - HyperLinkListener 未触发 - java swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com