3
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
4

3 回答 3

3

首先,考虑到您在三个月前问过这个问题,我不知道您是否已经解决了您的问题,呵呵。但我也有这个问题,我想我会发布我是如何解决它的。

这可能是一个丑陋的解决方案,但我就是这样做的:

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(这是我花了很长时间才弄清楚的原因)。如果没有指定 Tag 对象,它可能会覆盖添加换行符的默认行为。

这种方法的唯一问题是你得到所有这些跨度标签混乱的 html 文档,至少对我来说,这是不受欢迎的。

如果有任何其他(更优雅)的方式来操作 HTMLEditorKit 以不自动添加换行符,我很想知道它。

于 2012-07-18T12:17:38.877 回答
0

我认为这个问题有一个简单的解决方案,使用:

doc.insertString(doc.getLength(), "Test", null);

当你想添加纯文本和 HTMLEditorKit.insertHTML 时 html。

于 2013-11-07T20:36:46.503 回答
0

我发现 :

您只需要将“”替换为 unicode 即可。您可以使用 documentFilter 或截取空格 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);
    }
于 2013-02-28T23:16:20.950 回答