Java Swing HTML解析器的方法无法按预期工作

时间:2012-12-18 16:56:23

标签: java html swing parsing

所以我有JTextPane keyListener,并在每次按键后从窗格中获取文字。然后我尝试解析HTML标记,以使它们具有不同的颜色。

public void handleStartTag(HTML.Tag tag, MutableAttributeSet a, int pos)
{   
    if (tag == HTML.Tag.DIV)
    {
        System.out.println("tag Started:" + tag);
        tagFound = true;
    }
}

public void handleEndTag(HTML.Tag tag, int pos)
{
    if (tag == HTML.Tag.DIV)
    {
        System.out.println("tag Ended:" + tag);
        tagFound = false;
    }
}

问题是当我输入

<div

即使没有右括号也输出

标签已开始:div 标签结束:div

关闭代码时不应调用handleEndTag(),例如</div>,当我正确结束标记时,不应调用handleStartTag()<div>

1 个答案:

答案 0 :(得分:0)

如果您查看HTMLEditorKit.ParserCallback

使用的JavaDoc for DocumentParser
  

这会向所有有效标记以及隐含但未明确指定的标记发送回调消息。

你可以检查

  

对于隐含的标记,对于密钥HTMLEditorKit.ParserCallback.IMPLIED,AttributeSet参数的值为Boolean.TRUE。