【问题标题】:Programmatically detect if Swing HTML markup rendered correctly以编程方式检测 Swing HTML 标记是否正确呈现
【发布时间】:2018-10-15 06:38:13
【问题描述】:

有没有办法检测在 JLabel 中呈现的(语法正确的)HTML 是否已成功呈现,并且是否正在显示所有预期的字形

我有以下 HTML 字符串:

<html><h3>Title</h3><ul><li><b>S</b>tuff</li><li><b>S</b>taff</li><li><b>S</b>tiff</li></ul></html>

呈现:


标题

  • S凝灰岩
  • S员工
  • Stiff

但是,在应用程序中,JLabel 中的相同 HTML 呈现为:

可以看出,bold 什么都不是,我的自定义 HTML 解析器可以检查 HTML issues,它检测到该字符串是正确的,然后“正确”解析,并呈现字形,但是,bold Glyph(s) 将被其默认的 plain Glyph(s) 替换。

有没有办法以编程方式检测 Glyph 未被使用,然后搜索 Glyph 并替换它?

同样值得注意:

  • 类似的问题没有产生显着的结果。我可以确认 HTML 始终是正确的,即使使用“测试 HTML”,也会出现问题。
  • 字体包含粗体
  • 其他 HTML 标记正在其他地方正确呈现(p、i、h 等)
  • HTML 来自其他供应商,不应更改/处理/定义

【问题讨论】:

  • 你确定你运行的平​​台支持使用的字体吗?
  • @MickMnemonic 是的。我已经使用不同的 JLabel 和派生字体进行了测试。所有的字形都在那里,斜体、粗体、斜体和粗体等。应用程序有字形,只是没有使用它们,我一直无法检测到原因。如果可以的话,试着提出任何方向,我可能会试图找出原因。通过扫描 JLabel html 粗体范围中的字形并“绘制”,“问题”已经得到解决,但这是一个临时的 hack,不应该/不能保留。我想知道为什么会这样。
  • 你试过&lt;strong&gt;而不是&lt;b&gt;吗?
  • HTML 在这里按预期呈现。如其他地方所述,如果标签/PLAF 使用粗体字体,则首先将其设为纯字体。一种方法可能是 htmlLabel.setFont( htmlLabel.getFont().deriveFont(..) ); 或通过 PLAF 更改它(但这会影响 所有 标签,而不仅仅是用于呈现 HTML 的标签)。

标签: java html swing fonts jlabel


【解决方案1】:

默认情况下,JLabel 文本已经是粗体。您不能将其加粗,只能将其取消加粗并重新加粗。

试试:

<html><body style="font-weight: normal"><h3>Title</h3><ul><li><b>S</b>tuff</li><li><b>S</b>taff</li><li><b>S</b>tiff</li></ul></body></html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2021-09-07
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多