2
4

1 回答 1

1

这个答案不完整,当我继续回来时,我将它用作记事本。

javax.swing.text.html.HTML包含一个类Tag,它还包含大量Tag代表每个 HTML 标记的最终实例。

我们对这条线感兴趣;

public static final Tag STRONG = new Tag("b");

javax.swing.text.html.HTMLDocument包含一个HashTable tagMap存储所有这些标签的。

我们对线条感兴趣;

tagMap.put(HTML.Tag.STRONG, ca);

ca在哪里TagAction ca = new CharacterAction();和;

protected void registerTag(HTML.Tag t, TagAction a) {
    tagMap.put(t, a);
}

我还没有找到该包TagAction或访问/更改HTMLEditorKit.


我已经找到了我认为写出标签的位置(标有//here;

javax.swing.java.text.html.HTMLWriter.java

protected void writeEmbeddedTags(AttributeSet attr) throws IOException {

    // translate css attributes to html
    attr = convertToHTML(attr, oConvAttr);

    Enumeration names = attr.getAttributeNames();
    while (names.hasMoreElements()) {
        Object name = names.nextElement();
        if (name instanceof HTML.Tag) {
            HTML.Tag tag = (HTML.Tag)name;
            if (tag == HTML.Tag.FORM || tags.contains(tag)) {
                continue;
            }
            write('<');
            write(tag.toString());//Here
            Object o = attr.getAttribute(tag);
            if (o != null && o instanceof AttributeSet) {
                writeAttributes((AttributeSet)o);
            }
            write('>');
            tags.addElement(tag);
            tagValues.addElement(o);
        }
    }
}

所以看起来我们需要改变attributeSet正在编写的文档中构建 s 的任何内容。

于 2013-08-08T12:24:35.577 回答