JEdi​​torPane中的可点击HTML链接但是使用replaceSelcetion方法

我搜索了如何在JEditorPane制作可点击的链接,我发现了这个问题

是否可以用Java创建程序来创建要在Chrome中链接的文本?

它非常有用,但我的代码使用了重复声明

 JEditorPane jep = new JEditorPane(); jep.setContentType("text/html"); jep.setEditable(true);// Because .replaceSelection can't work with disabled edit for ( int i = 1; i <= 3; i++ ){ jep.replaceSelection( "Welcome to StackOverflow i ."); } jep.setEditable(false); 

现在它只显示没有可点击链接的文本,所以我将如何使它正确,我真的需要replaceSelection方法

HTMLDocument上使用replaceSelection()插入原始字符串; 您想要插入HTML锚标记。 您可以,

  • 自己管理原始HTML文本,如下所示,让setText()处理解析。

  • 使用现有的HTMLEditorKit嵌套操作之一。

  • 使用此处显示的自定义方法之一。

图片

 import java.awt.Desktop; import java.awt.HeadlessException; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; /** * @see https://stackoverflow.com/a/16447176/230513 * @see https://stackoverflow.com/a/14170141/230513 */ public class Test { public static void main(String[] argv) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { display(); } }); } private static String create(int i) { StringBuilder sb = new StringBuilder(https://stackoverflow.com/questions/16444170/clickable-html-link-in-jeditorpane-but-using-replaceselcetion-methode/); sb.append("Welcome to Example "https://stackoverflow.com/questions/16444170/clickable-html-link-in-jeditorpane-but-using-replaceselcetion-methode/); sb.append(ihttps://stackoverflow.com/questions/16444170/clickable-html-link-in-jeditorpane-but-using-replaceselcetion-methode/); sb.append(".
"); return sb.toString(); } private static void display() throws HeadlessException { JEditorPane jep = new JEditorPane(); jep.setContentType("text/html"); StringBuilder sb = new StringBuilder(https://stackoverflow.com/questions/16444170/clickable-html-link-in-jeditorpane-but-using-replaceselcetion-methode/); sb.append("Welcome:

"); for (int i = 1; i <= 3; i++) { sb.append(create(i)); } sb.append("
"); jep.setText(sb.toString()); jep.setEditable(false); jep.addHyperlinkListener(new HyperlinkListener() { @Override public void hyperlinkUpdate(HyperlinkEvent e) { if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) { System.out.println(e.getURL()); Desktop desktop = Desktop.getDesktop(); try { desktop.browse(e.getURL().toURI()); } catch (Exception ex) { ex.printStackTrace(); } } } }); JFrame f = new JFrame("HyperlinkListener"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(jep); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } }