【问题标题】:Java Swing JLabel, HTML and custom fontsJava Swing JLabel、HTML 和自定义字体
【发布时间】:2012-01-15 10:02:24
【问题描述】:

在我们的 Java Swing 应用程序中,我们正在加载自定义字体并将其添加到 JLabel

try {
  this.font = Font.createFont(Font.TRUETYPE_FONT, new File("resources/fonts/ourcoolfont.ttf")).deriveFont(16f);
} catch (Exception e) {
  this.font = new Font("Arial", Font.PLAIN, 16);
}
this.label.setFont(this.font);

在 3 个不同的系统上简单且运行良好。直到其他人试图运行它。字体已加载(因为我们也在其他一些 Swing 元素上使用),但未在 JLabel 中使用。

经过一番搜索,我发现您不能同时使用 HTML 和加载的字体。由于某些原因,它适用于我的系统(我认为它与 Java 版本有关),但不适用于其他系统。由于我们希望项目能够在过时的 Java 版本中运行,因此不能只要求更新。

一种选择是在计算机上安装字体,这是我们不喜欢做的事情。我找到的最好的解决方案是这个: How can I create a Java/Swing text component that is both styled and has a custom font?

不过,这个问题是关于JTextPaneJLabel 似乎没有我可以使用的 getStyledDocument() 方法。

有什么方法可以让我们的字体与JLabel一起工作?

【问题讨论】:

    标签: java html swing fonts jlabel


    【解决方案1】:

    使用一些字体:

    <html><head><style type="text/css">
    body { font-family: Cool; } </style></head><body>...
    

    您创建的字体必须首先在单例 GraphicsEnvironment 中注册才能供所有人访问:

    GraphicsEnvironment genv = GraphicsEnvironment.getLocalGraphicsEnvironment();
    genv.registerFont(font);
    

    【讨论】:

    • 谢谢!只需注册似乎就足以解决问题:)
    【解决方案2】:

    因为StyledDocument 扩展了Document,您可以使用JTextFieldsetDocument() 方法实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多