【问题标题】:Java swing styled fonts vs html parse?Java swing 风格的字体与 html 解析?
【发布时间】:2014-10-01 02:14:40
【问题描述】:

我正在开发一个带有许多文本字段和自定义 JComponents 的 Java 应用程序。到目前为止,我已将所有文本放入 JLabels 中,并使用 HTML 设置样式(使用<font><style>)。这也可以很好地处理包装。

但是,我想使用我的自定义 JComponent 之一将文本放在自定义坐标处。当我这样做时(使用graphics.drawString(text,x,y)),HTML 代码似乎没有任何效果,所以我尝试使用g.setFont(new Font("Courier New", Font.PLAIN, 14)); g.setColor(new Color(0x999999)); 对其进行样式设置,这有效,但文本看起来明显不同,即使字体/颜色应该相同/风格。在我下面发布的图片中可能很难看到,但 HTML 样式的代码看起来更平滑且更厚一些(不,它不是粗体)。 (在本例中,swing 文本的大小实际上是 14 而不是 12,但无论哪种方式看起来都一样);

Swing 样式文本:

html 样式文本:

我的问题是,基本上,我应该怎么做?我可以通过我的项目并使用setFont() 重新设置所有 HTML 字符串的样式,但这听起来需要做很多工作,而且我实际上更喜欢 HTML 外观。有没有办法:

a) 样式文本,使其看起来像 HTML 文本,

b) 在自定义 JComponents 中解析/使用 HTML 样式,可能通过扩展 JLabel 并利用它使用的任何内部 API

c) 用我想要的文本绘制一个新的 JLabel 到一组指定的坐标(在 JPanel 内等)

d) 其他选项?

谷歌搜索没有发现任何有用的信息。请让我知道你在想什么。谢谢。

【问题讨论】:

    标签: java html css swing fonts


    【解决方案1】:

    a) 样式文本,使其看起来像 HTML 文本,

    试试using anti-aliasing on your custom drawString graphics calls

    b) 在自定义 JComponents 中解析/使用 HTML 样式,可能通过扩展 JLabel 并利用它使用的任何内部 API

    您可以检查 JCL 的源代码并深入挖掘并重写所有相同的逻辑,以使您的图形绘制逻辑与 HTML 呈现逻辑相同......但这太费力了。

    c) 用我想要的文本绘制一个新的 JLabel 到一组指定的坐标(在 JPanel 内等)

    您可以使用null layout

    d) 其他选择?

    只需使用在您的应用程序中选择字体的相同方法即可。也许在某处存储对所使用的 Font 对象的静态引用,并在任何地方使用该对象。这意味着不使用字体 html 或 css 属性,并可能扩展 JLabel 以使用抗锯齿。

    【讨论】:

    • 谢谢。手动设置抗锯齿有帮助。 (虽然奇怪的是没有一个可用的方法是完全匹配的。)不过对于我正在做的事情来说已经足够接近了。
    【解决方案2】:

    文本组件的 Swing UI 委托通常指定与 logical font families 相同的字体。使用Font.SERIF,对于example,或label.getFont().deriveFont(…),对于example,您可能会得到更好的结果。

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多