我是java和编程的新手,所以为了帮助我学习我正在尝试构建一个简单的应用程序,将一些信息输出到日志窗口。
我正在输出到JEditorPane。但是我想要包含超链接和其他可能的html内容,所以我在它上面使用HTMLEditorKit并调用insertHTML(...)方法。
我的问题似乎是(我认为!)我试图逐行构建html代码,这意味着让标签保持打开状态,直到后来的insertHTML将它们关闭。但这似乎不起作用。
例如,以下代码:
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(new MigLayout("", "[grow]", "[30px][grow]"));
JEditorPane editorP = new JEditorPane();
JScrollPane scrollPane = new JScrollPane(editorP); // put the editor pane into a scrollable pane
panel.add(scrollPane, "cell 0 1");
scrollPane.setPreferredSize(new Dimension(500, 500));
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
editorP.setContentType("text/html");
editorP.setEditable(false);
HTMLDocument doc = (HTMLDocument) editorP.getDocument();
HTMLEditorKit kit = (HTMLEditorKit) editorP.getEditorKit();
try {
kit.insertHTML(doc, doc.getLength(), "<font face='calibri'>", 0, 0, null);
kit.insertHTML(doc, doc.getLength(), "www.google.com", 0, 0, null);
kit.insertHTML(doc, doc.getLength(), "</font>", 0, 0, null);
kit.insertHTML(doc, doc.getLength(), "<font face='calibri'>www.yahoo.com</font>", 0, 0, null);
String debug = editorP.getText();
System.out.println(debug);
} catch(Exception e) { System.out.println(e); }
结果是html:
</head>
<body>
www.google.com
<font face="calibri">www.yahoo.com</font>
</body>
</html>
所以在我看来(我认为!)不会在insertHTML调用中完全关闭标记会导致它们被删除。
我的问题是:有没有办法一行一行地做到这一点?或者我是否需要先在字符串中逐行创建我的html代码,然后将其传递给insertHTML?
所有帮助表示赞赏。