2012-03-11 41 views
2

我今天没有在JTextPane中使用过HTML,并且今天玩这个。我遇到了奇怪的输出。JTextPane中的html - 奇怪的框出现标记

这里是我的简单的代码,htmlStr包含包含标记<aa>

public class HtmlInJTextPaneTest extends JFrame { 
    private JTextPane jtp; 
    private String htmlStr= "<html><body><b>What is this</b> <aa > ?? </body></html>"; 
    public HtmlInJTextPaneTest() { 
     jtp = new JTextPane(); 
     jtp.setContentType("text/html"); 
     jtp.setText(htmlStr); 
     //jtp.setEditable(false); 

     //jFrame setup 
     add(jtp); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(200, 100); 
     setVisible(true); 
    } 
    public static void main(String[] args) { 
     new HtmlInJTextPaneTest(); 
    } 
} 

的这个输出是:

enter image description here

我不知道为什么箱(好像输入字段)出现在其中的标签名称为aa

当我在JTextPane对象jtp上设置可编辑的false时它消失。

jtp.setEditable(false); 

你能解释一下吗?

+0

看起来HTML解析器错误地解释了“”。如果删除“aa”周围的尖括号,则不应该发生这种情况。我不确定解析器是否与标准浏览器中的解析器相媲美。 – 2012-03-11 04:22:37

+0

我相信JTextPane用于呈现html字符串的HTML解析器无法与标准浏览器的功能进行比较。但是,我想知道他们为什么将解释成这样的盒子? – gtiwari333 2012-03-11 04:29:39

+1

我猜测,这只是JTextPane对未知HTML标签的回退。我做了一些搜索,并在本页看到了一条有趣的评论:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4765240。检查最后一条评论,这表明可能会解决该回退行为。如果它适合你,那么我会将它作为答案发布。 – 2012-03-11 04:41:36

回答