java 带 html 标签的 swing 标签 - 空白消失

java swing label with html tag - white spaces disappearing

我正在尝试为字符串中的一个字符着色,但是当我这样做时,大部分空格都消失了。为什么会这样,有什么解决办法吗?

map[9]  =       "#                                     #        ####     #";
map[10] =       "#                                     #        #        #";
map[11] = "<html>#                                     #        #<font color=YELLOW>.</font>       #</hmtl>";
map[12] =       "#   ###################################        #        #";
map[13] =       "#   #                                 #        ####     #";

我将字符串分配给数组,然后将每个字符串设置为它自己的 JLabel

我已经尝试输入 unicode 空白字符(普通空白 \u0020 和不间断空白 \u00A0): 不间断空格有效,但我后来必须检查播放器位置是否有空格,但我没有让它与 \u00A0.

一起正常工作

另外,当我对字符串使用 html 标记时,(文本或 JLabel - 我不知道两者中的哪一个)会向底部偏移一点。我怎样才能让它保持在没有 html 标签的位置?

space 消失了,因为 HTML 是白人 space 不可知论者。这意味着文档的结构和布局不取决于是否有space、制表符和换行符,以及它们有多少。

这是规范,所有 HTML 解析器都需要这样做,包括 "pseudo HTML" 用法,例如 JLabel(仅支持 HTML 的基本格式的最小子集)。

可能的解决方案:

  • 尝试使用 &nbsp; 而不是 Unicode。这可能会导致相同的副作用
  • 尝试将每个 space 包围在其自己的元素中,例如 <span><b> 或类似元素。这可能有效,但会使它变得非常麻烦。另外,不确定 JLabel 是否可以处理跨度。

除此之外,如果您正在尝试实现某种进度指示器或 "seek line",也许有比彩色 JLabel 更好的解决方案,例如 JProgressBar...