I am trying to experiment with non- JTextArea Swing text components, and in this code I am trying to display a very simple web page in JTextPane . I can read the web page and put it in a JTextPane document, as shown by printing a line that returns when getText called on my HTMLDocument , but nothing is displayed in JTextPane. It seems to me that I missed something basic. Thanks in advance.
My SSCCE:
import java.awt.*; import java.io.IOException; import java.net.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.text.html.*; @SuppressWarnings("serial") public class TestStyledDoc2 extends JPanel { public static final String GETTY_FILE = "http://www.d.umn.edu/~rmaclin/" + "gettysburg-address.html"; private HTMLEditorKit htmlKit = new HTMLEditorKit(); private HTMLDocument htmlDocument = (HTMLDocument) htmlKit.createDefaultDocument(); private JTextPane htmlPane = new JTextPane(htmlDocument); public TestStyledDoc2() { JScrollPane scrollPane1 = new JScrollPane(htmlPane); try { htmlPane.setEditorKit(htmlKit); URL gettyUrl = new URL(GETTY_FILE); htmlKit.read(gettyUrl.openStream(), htmlDocument, 0); System.out.println(htmlDocument.getText(0, htmlDocument.getLength())); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (BadLocationException e) { e.printStackTrace(); } scrollPane1.getViewport().setPreferredSize(new Dimension(400, 400)); setLayout(new BorderLayout()); add(scrollPane1, BorderLayout.CENTER); } private static void createAndShowUI() { JFrame frame = new JFrame("TestStyledDoc"); frame.getContentPane().add(new TestStyledDoc2()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { createAndShowUI(); } }); } }
source share