gpt4 book ai didi

java - 使用 HyperlinkListener 从 JEditorPane 获取 URL

转载 作者:行者123 更新时间:2023-11-29 04:33:12 27 4
gpt4 key购买 nike

您好,我在从使用 HyperlinkListener 在 HTML 中设置的 JEditorPane 获取 URL 时遇到问题,我已经检查了很多关于这个问题的堆栈问题,但似乎没有一个能解决它,我已经减少了代码尽我所能,仍然得到错误。当我使用 getURL() 方法时它返回 null,而 getDescription() 方法在我希望它返回“https://www.google.com”时返回字符串“url”,我想我只是遗漏了一些非常明显的东西

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;


public class View extends JFrame {

private String urls = "<a href=\"url\">https://www.google.com</a>";
private JEditorPane textArea;

public View() {
super("Test");
setPreferredSize(new Dimension(400,400));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

textArea = new JEditorPane();
textArea.setEditable(false);
textArea.setContentType("text/html");
textArea.setEditorKit(JEditorPane.createEditorKitForContentType("text/html"));
textArea.setBackground(Color.lightGray);
textArea.setEnabled(true);
textArea.setText(urls);
textArea.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
System.out.println(e.getURL());
System.out.println(e.getDescription());
}
}
});
add(textArea);

pack();
setVisible(true);
}
}

谢谢

最佳答案

问题不在于您的 HyperlinkListener或者HyperlinkEvent的信息

问题出在您的 HTML 源代码上,花点时间仔细检查一下...

<a href=\"url\">https://www.google.com</a>

你能看出它为什么打印 url 吗? ?问题是,HyperlinkEvent给你 href (也可能是 description )属性,而不是元素的文本。

因此,基于此,您的代码运行良好。

但是,如果你真的想返回 www.google.com ,您需要将源 HTML 更改为更类似于 <a href=\"https://www.google.com\">Google me</a>" 的内容

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class Test extends JFrame {

private String urls = "<a href=\"https://www.google.com\">Google me</a>";
private JEditorPane textArea;

public static void main(String[] args) {
JFrame test = new Test();
test.pack();
test.setLocationRelativeTo(null);
test.setVisible(true);
}

public Test() {
super("Test");
setPreferredSize(new Dimension(400, 400));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

textArea = new JEditorPane();
textArea.setEditable(false);
textArea.setContentType("text/html");
textArea.setEditorKit(JEditorPane.createEditorKitForContentType("text/html"));
textArea.setBackground(Color.lightGray);
textArea.setEnabled(true);
textArea.setText(urls);
textArea.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
System.out.println(e.getURL());
System.out.println(e.getDescription());
}
}
});
add(new JScrollPane(textArea));
}
}

这将打印出来

https://www.google.com
https://www.google.com

关于java - 使用 HyperlinkListener 从 JEditorPane 获取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937842/

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