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?