Java HTMLEditorKit InsertHml将换行标记添加到字符串中
结果是:Java HTMLEditorKit InsertHml将换行标记添加到字符串中,java,newline,htmleditorkit,Java,Newline,Htmleditorkit,结果是: HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, null); HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, HTML.Tag.B); -添加了“\n” "Test " 结果是: HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, null); HTMLEdito
HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, null);
HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, HTML.Tag.B);
-添加了“\n”
"Test
"
结果是:
HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, null);
HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, HTML.Tag.B);
它将显示如JTextPane中所示的文本:
123456789
首先,考虑到你三个月前问了这个问题,我不知道你是否已经解决了你的问题,呵呵。但我也遇到了这个问题,我想我会把我是如何解决它的 这可能是一个丑陋的解决方案,但我就是这样做的:
123
456
789
HTMLEditorKit.insertHTML(doc,doc.getLength(),“Test”,0,0,HTML.Tag.SPAN);
同样,以下连续的insertHTML调用将以您想要的方式打印数字:
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>Test</span>", 0, 0, HTML.Tag.SPAN);
HTMLEditorKit.insertHTML(doc,doc.getLength(),“123”,0,0,HTML.Tag.SPAN);
HTMLEditorKit.insertHTML(doc,doc.getLength(),“456”,0,0,HTML.Tag.SPAN);
HTMLEditorKit.insertHTML(doc,doc.getLength(),“789”,0,0,HTML.Tag.SPAN);
我不知道为什么仅仅在字符串中包含span标记是不够的,但是您还必须通过函数调用传递HTML.tag.span(这是我花了这么长时间才弄明白的)。
如果没有指定标记对象,它可能会覆盖添加换行符的默认行为
这种方法唯一的问题是,所有这些span标记都会使html文档变得杂乱无章,至少对我来说,这是不可取的
如果有任何其他(更优雅的)方法来操纵HTMLEditorKit,使其不自动添加换行符,我很想知道。我发现:
只需将“”替换为unicode即可。您可以使用documentFilter或截取空格键:
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>123</span>", 0, 0, HTML.Tag.SPAN);
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>456</span>", 0, 0, HTML.Tag.SPAN);
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>789</span>", 0, 0, HTML.Tag.SPAN);
我认为这个问题有一个简单的解决方案,使用:
protected class Filtre extends DocumentFilter implements Serializable {
public Filtre() {
}
@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr) throws BadLocationException {
replace(fb, offset, 0, str, attr);
}
@Override
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str, AttributeSet attrs) throws BadLocationException {
String result = str.replaceAll(" ", "\u00A0");
fb.replace(offset, length, result, attrs);
}
当您想要添加纯文本和html时,请在html中添加HTMLEditorKit.insertHTML