在JEditorPane中附加文本

时间:2014-04-25 12:10:57

标签: java swing jeditorpane

我正在开发一个使用JEditorPane来显示数据库数据的应用程序。

EditorPane假设以HTML格式附加resultSet。 我的问题是,JEditorPane会删除第一个resultSet并仅显示最后一个resultSet

以下是我的代码的摘录:

   while(rs.next()){
    String htmlComent = "<"html>"<b>
    + "<"head><"title><"/title>"</>
    + "<"body>"<b>
    + "<"hr>"
    + "<"b align='left'> Subject"+"    : "+rs.getString(1)+"<"/b><"br>"
    + "<"b align='left'> Institution"+": "+rs.getString(2)+"<"/b><"br>"
    + "<"b align='left'> Date" +"      "+": "+rs.getString(3)+"</b><br>"
    + "<"b align='left'> Minuted To "+": "+rs.getString(4)+"</b><"br>"
    + "<"b align='left'> Minuted by "+": "+rs.getString(5)+"<"/b><"br>"
    + "<"hr>"
    + "<"p align = 'left' ><"B>Comment<"/B><"/p>"

    +  rs.getString(6)
    + "<"/body>"
    + "<"/head>"
    + "<"/html>";
     append(htmlComent+ "\n" );

..............................

/**
 *  This method appends text to a JEditorPane
 */
public void append(String s) {
    try {
      HTMLEditorKit kit = new HTMLEditorKit();
      HTMLDocument doc2 = new HTMLDocument();
      editorPane.setEditorKit(kit);
      editorPane.setDocument(doc2);
      HTMLDocument doc = (HTMLDocument)editorPane.getDocument();
      kit.insertHTML(doc, doc2.getLength(), s, 0, 0, null);
      //kit.insertHTML(doc, doc2.getLength(),, s, 0, 0, null);
   } catch(BadLocationException |IOException exc) {
      JOptionPane.showMessageDialog(this, exc.getMessage());
   }
}

..........................

有人能告诉我哪里出错了吗?

3 个答案:

答案 0 :(得分:0)

 String htmlComent = "<html><b> <head><title></title></head><body><b>";

while(rs.next())
{
     htmlComent=htmlcoment +
     "<"hr>"
    + "<"b align='left'> Subject"+"    : "+rs.getString(1)+"<"/b><"br>"
    + "<"b align='left'> Institution"+": "+rs.getString(2)+"<"/b><"br>"
    + "<"b align='left'> Date" +"      "+": "+rs.getString(3)+"</b><br>"
    + "<"b align='left'> Minuted To "+": "+rs.getString(4)+"</b><"br>"
    + "<"b align='left'> Minuted by "+": "+rs.getString(5)+"<"/b><"br>"
    + "<"hr>"
    + "<"p align = 'left' ><"B>Comment<"/B><"/p>"
    +  rs.getString(6) +"</br>";
    }

htmlcoment=htmlcomment+ "</body></html>";

你的字符串追加应该是这样的,这样你的结果集中的所有数据都会附加在一个字符串中,然后你可以在任何你想要的地方使用这个字符串

答案 1 :(得分:0)

在while循环之前初始化htmlComent字符串,在循环中构建字符串并在循环外调用append方法。

答案 2 :(得分:0)

问题出在您的append()方法和String htmlContent ..

你应该在此之前开始htmlContent,如下所示:

StringBuilder htmlContent = new StringBuilder();
htmlContent.append("<html>");
htmlContent.append("<head>");
htmlContent.append("<title>Your title goes Here</title>");
htmlContent.append("</head>");
htmlContent.append("<body>");

while (rs.next()) {
   htmlContent.append("<hr>");
   htmlContent.append("<b align='left'> Subject    : "+rs.getString(1)+"</b><br>");
   htmlContent.append("<b align='left'> Institution: "+rs.getString(2)+"</b><br>");
   htmlContent.append("<b align='left'> Date      : "+rs.getString(3)+"</b><br>");
   htmlContent.append("<b align='left'> Minuted To : "+rs.getString(4)+"</b><br>");
   htmlContent.append("<b align='left'> Minuted by : "+rs.getString(5)+"</b><br>");
   htmlContent.append("</hr>");
   htmlContent.append("<p align = 'left' ><B>Comment</B></p>");
   htmlContent.append(rs.getString(6));
}

htmlContent.append("</body>");
htmlContent.append("</html>");

//Now you can append your text to the HtmlEditorKit
append(htmlContent.toString());

您应该在迭代之前添加标头,因为您需要创建一个HTML页面来显示所有结果。 在给出的代码中,您正在为resultSet的每次迭代创建一个新的Html页面,这就是为什么它只显示最后的结果。

话虽如此,我们现在正在做的是创建一个标题 并且,对于每次迭代,创建<hr>内容

在迭代后,您关闭<body><html>标记 并将其附加到您的HtmlEditorKit =)