简体   繁体   中英

how to display clickable links in JEditorPane

I am trying to display a list of clickable links in JEditorPane. Here is my code:

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.Style;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;


public class GUI extends JFrame{
    JEditorPane editorpane=new JEditorPane();
    //this is the constructor
    GUI(){
        JFrame frame=new JFrame("Frame");

        frame.add(editorpane);
        JScrollPane scroll=new JScrollPane(editorpane);

        editorpane.setContentType("text/html");
        editorpane.setEditable(false);
        editorpane.setText("<html><body>Test <a href='http://www.java.net'>"
+ "www.java.net</a></body></html>");
        StyleSheet css = ((HTMLEditorKit)
        editorpane.getEditorKit()).getStyleSheet();
        Style style = css.getStyle("body");
        editorpane.addHyperlinkListener(new HyperlinkListener() {
        public void hyperlinkUpdate(HyperlinkEvent e) {
        if (e.getEventType() ==
        HyperlinkEvent.EventType.ACTIVATED) {
        System.out.println("Open browser: " + e.getURL());
        }
        }
        });
        frame.setSize(512, 342);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(scroll);
        frame.show();
    }
    public void append(String s) {
    try{
        Document doc = editorpane.getDocument();
        doc.insertString(doc.getLength(), "\n", null);
        doc.insertString(doc.getLength(), s, null);

    }
    catch(BadLocationException exc){
    }
    }
    //main method
    public static void main(String args[]){

    GUI gui=new GUI();
    gui.append("<html><body>Test <a href='http://www.java.net'>"
+ "www.java.net</a></body></html>");


    }
}

It is showing a clickable link, when I used setText() method in the constructor, but then when I tried to display additional link with append(); method it is showing the html tags along with the text and it doesn't make my url a hyperlink. Any ideas, why is it not working with append?

Use either method of HTMLEditorKit

public void insertHTML(HTMLDocument doc, int offset, String html,
               int popDepth, int pushDepth,
               HTML.Tag insertTag) 

Or methods of HTMLDocument

public void insertAfterEnd(Element elem, String htmlText)
public void insertAfterStart(Element elem, String htmlText)
public void insertBeforeStart(Element elem, String htmlText
public void insertBeforeEnd(Element elem, String htmlText)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM