HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, null);
结果:
"Test
"
- 已添加'\ n'
HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, HTML.Tag.B);
结果:
"Test</b>"
如何制作最后没有添加任何内容的文字?
我使用JTextPane。使用hTMLEditorKit.insertHTML方法打包名为“append(string)”的方法来附加文本。
但是当我追加一些字符串时 “123”; “456”; “789”;
我从来没有附加像“
“
组件无法显示我想要的内容:
123456789
它将显示JTextPane中的文本:
123
456
789
答案 0 :(得分:2)
首先,我不知道你是否已经解决了你的问题,考虑到你在三个月前问过这个问题。但我也遇到了这个问题,并且认为我会发布我是如何解决它的。
这可能是一个丑陋的解决方案,但我就是这样做的:
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>Test</span>", 0, 0, HTML.Tag.SPAN);
同样,以下连续的insertHTML调用将以您希望的方式打印数字:
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);
我不确定为什么仅仅在字符串中包含span标记是不够的,但你还必须通过函数调用传递HTML.Tag.SPAN(这是我花了很长时间才弄清楚的)。 如果指定了 no Tag对象,它可能会覆盖添加换行符的默认行为。
这种方法的唯一问题是你得到的所有这些span标签都会混淆html文档,至少在我看来这是不可取的。
如果有任何其他(更优雅)的方式来操纵HTMLEditorKit以不自动添加换行符,我很乐意了解它。
答案 1 :(得分:0)
我找到了:
你只需要用unicode代替“”。您可以使用documentFilter或拦截space keyStroke:
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);
}
答案 2 :(得分:0)
我认为这个问题有一个简单的解决方案,使用:
doc.insertString(doc.getLength(), "Test", null);
当你想在html时添加纯文本和HTMLEditorKit.insertHTML。