我正在使用 JEditorPane 文档从字符串填充。我执行以下代码,但我不明白为什么以下指令返回的文档长度始终为 0。
提前感谢您的详细解释。
String xxx = "This is my text sample";
javax.swing.JEditorPane p = new javax.swing.JEditorPane();
p.setContentType("text/rtf");
EditorKit kitRtf = p.getEditorKitForContentType("text/rtf");
java.io.InputStream stream = new java.io.ByteArrayInputStream(xxx.getBytes());
kitRtf.read(stream, p.getDocument(), 0);
System.out.println(p.getDocument().getLength());
代码输出为零的原因是因为您的编辑器工具包、字符串和编辑器窗格中的文档是脱节的。它们之间没有任何关系,尤其是编辑器工具包和文档之间。首先看一个没有编辑器套件的简单示例。它将显示您要设置的字符串与文档之间的关系。过程很简单:
public static void main(String[] args) throws IOException, BadLocationException {
String xxx = "This is my text sample";
javax.swing.JEditorPane p = new javax.swing.JEditorPane();
Document doc = new DefaultStyledDocument();
p.setDocument(doc);
doc.insertString(0, xxx, null);
System.out.println(p.getDocument().getLength());
}
输出 22。
现在您知道如何将字符串连接到文档,让我们添加编辑器工具包。使用编辑器工具包时,您必须确保文档和编辑器工具包之间存在关系或关联。为此:
public static void main(String[] args) throws IOException, BadLocationException {
String xxx = "This is my text sample";
javax.swing.JEditorPane p = new javax.swing.JEditorPane();
EditorKit kitRtf = new RTFEditorKit();
Document doc = kitRtf.createDefaultDocument();
p.setDocument(doc);
doc.insertString(0, xxx, null);
System.out.println(p.getDocument().getLength());
}
这也输出 22