gpt4 book ai didi

java - HTML 不再在 JLabel(和其他组件)中工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:21:03 26 4
gpt4 key购买 nike

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

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

我尝试使用 JEditorPane,当内容是 HTML 时似乎遇到了同样的问题。

另外需要注意的重要一点是,您第一次加载小程序(Java 运行时第一次启动)它运行良好,但如果您刷新网页,它就会出现所描述的问题。

有没有人有类似的问题?任何人有任何见解?还是我只是在做一些蠢事?

我制作了一个非常简单的测试小程序,我可以 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);
}
}

[HellowWorldApplet.html]

<html>
<title>A Test</title>
<body>
<applet code="HelloWorldApplet.class" width="320" height="120">
You need Java
</applet>
</body>
</html>

附言。我一直主要使用 Chrome 进行测试,但我也在 IE 8 中进行了简单的尝试。此外,我(显然)安装了最新的 Java SE 6 更新 22 作为我的运行时,并为我的 JDK 提供了匹配的更新。我简单地使用以下代码编译上面的测试小程序:“javac HelloWorldApplet.java”

最佳答案

浪费了一个下午寻找原因,请参阅以下错误报告 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);
}
}

关于java - HTML 不再在 JLabel(和其他组件)中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4330602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com