我正在开发一个使用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());
}
}
..........................
有人能告诉我哪里出错了吗?
答案 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 =)