HTMLEditorKit insertHTML为字符串添加换行标记

时间:2012-04-12 17:32:38

标签: java newline htmleditorkit

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

3 个答案:

答案 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。