使用java HTMLEditorKit insertHTML逐行构建html

时间:2016-01-28 02:28:49

标签: java

我是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?

所有帮助表示赞赏。

0 个答案:

没有答案