HTML不再适用于JLabel(和其他组件)

dev*_*lop 9 java applet

我有一个我编写的java applet,并且已经运行了很长一段时间.在applet中,我有一堆在其文本内容中使用HTML的JLabel(这是允许的,并且已经工作多年).我使用HTML的主要原因是允许JLabel中的换行符.

问题:最近,其中包含HTML的JLabel(有些没有)停止显示其文本.我认为它可能与最近的Java更新(2010年10月12日的Java SE 6 Update 22)有关,但不是100%肯定,但问题似乎确实在那时开始.也许已经引入了一个bug?或删除功能?

我尝试使用JEditorPane,当内容为HTML时,似乎也有同样的问题.

另外需要注意的是,第一次加载applet时(第一次启动java运行时)它运行起来很精细,但如果刷新网页则会出现上述问题.

有没有人有类似的问题?有谁有任何见解?或者我只是在做一些愚蠢的事情?

我做了一个非常简单的测试applet,我可以100%规律地重现问题(记住第一次运行时加载它会工作正常,只有连续的刷新会导致问题):

[HelloWorldApplet.java]

import javax.swing.*;

public class HelloWorldApplet extends JApplet
{
    public void init()
    {
        this.add(new JLabel("Hello Everybody (Text)"), java.awt.BorderLayout.NORTH);
        this.add(new JLabel("<html><body>Hello Everybody (HTML)</body></html>"), java.awt.BorderLayout.SOUTH);
    }
}
Run Code Online (Sandbox Code Playgroud)

[HellowWorldApplet.html]

<html>
<title>A Test</title>
<body>
    <applet code="HelloWorldApplet.class" width="320" height="120">
        You need Java
    </applet>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

PS.我一直主要使用Chrome测试,但我也在IE 8中尝试过.此外,我(显然)安装了最新的Java SE 6更新22作为我的运行时间,并具有我的JDK的匹配更新.我使用简单的编译上面的测试applet:"javac HelloWorldApplet.java"

小智 7

浪费了一个下午寻找原因,请参阅以下错误报告http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6993691

错误报告中的解决方法是:

import javax.swing.*;
import javax.swing.text.html.parser.ParserDelegator;

public class HelloWorldApplet extends JApplet {
    public void init() {
       ParserDelegator workaround = new ParserDelegator();
       applet.add(new JLabel("Hello Everybody (Text)"), java.awt.BorderLayout.NORTH);
       applet.add(new JLabel("<html>Hello Everybody (HTML)</html>"),  java.awt.BorderLayout.SOUTH);
    }
}
Run Code Online (Sandbox Code Playgroud)