JEdi​​torPane中的HTMLEditorKit和Custom标签

时间:2012-02-21 14:12:59

标签: java swing dtd jeditorpane htmleditorkit

我使用说明添加自己的标记http://java-sl.com/custom_tag_html_kit.html

class MyParserDelegator extends ParserDelegator {
public MyParserDelegator() {
    try {
        Field f=javax.swing.text.html.parser.ParserDelegator.class.getDeclaredField("dtd");
        f.setAccessible(true);
        DTD dtd=(DTD)f.get(null);
        javax.swing.text.html.parser.Element div=dtd.getElement("div");
        dtd.defineElement("button", div.getType(), true, true,div.getContent(),null, null,div.getAttributes());

    } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
    }
}

}

不幸的是它无法正常工作:
image http://s017.radikal.ru/i433/1202/5b/c73d3025ba5b.gif
任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

它适用于我使用以下(jdk 1.7):

Field f = javax.swing.text.html.parser.ParserDelegator.class.getDeclaredField("DTD_KEY");

唯一的变化是关键:"DTD_KEY"大写!!

我使用

找到了密钥“DTD_KEY”
Field[] flds = javax.swing.text.html.parser.ParserDelegator.class.getDeclaredFields();
for (Field f: flds)  
{
       System.err.println(f.getName());
}

答案 1 :(得分:0)

我查看了JDK 7的来源:% Generate test data T = table(['M';'M';'F';'F';'F'],[38;43;38;40;49],... [71;69;64;67;64],[176;163;131;133;119]) T.Properties.VariableNames = {'data1' 'data2' 'data3' 'Weight'} % Get variable names var_names = T.Properties.VariableNames % Get variable names that start with 'data' (filtering) var_names_subset = var_names( strncmp( var_names, 'data', 4 ) ) % Index those variables only T(:, var_names_subset) 不再存储在$scope.perspectives=[ {perfomance:'AAA', current:'a', previous:'b', variance:'c', plus:false, graphData:[ ['value', 32.4], ['value', 13.2], ['value', 84.5], ['value', 19.7], ['value', 22.6], ['value', 65.5], ['value', 77.4], ['value', 90.4], ['value', 17.6], ['value', 59.1], ['value', 76.8], ['value', 21.1] ] } ]; 的属性<table><tr ng-repeat="perspective in perspectives"> <td> <div class="hc-pie" items="perspective.graphData"></div> </td> <td>{{perspective.perfomance}}</td> <td>{{perspective.current}}</td> <td>{{perspective.previous}}</td> <td>{{perspective.variance}}</td> </tr></table> 中,而是存储在DTD中。来自sun包,AppContext不应该由JRE自己的类访问。 因此,使用dtd的来源,我写了javax.swing.text.html.parser.ParserDelegator自己加载DTD。之后,可以轻松地在DTD中添加自定义标记。

下面的代码还包含http://java-sl.com/custom_tag_html_kit.html中的其他类,以获得一个有效的示例。

sun.awt.AppContext