Java Swing标签、HTML和自定义字体

4

在我们的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);

在三个不同的系统上轻松使用,但是其他人尝试运行时出现问题。虽然字体已加载(因为我们还在一些其他Swing元素中使用它),但没有在JLabel中使用。

经过一番搜索,我发现不能同时使用HTML和已加载的字体。由于某些原因,在我的系统上可以正常工作(我认为这与Java版本有关),但在其他一些系统上却无法正常工作。由于我们希望该项目能够在过时的Java版本中运行,所以要求更新并不是一个选择。

一种选择是在计算机上安装该字体,但我们不喜欢这样做。我找到的最佳解决方案是这个: 如何创建既有样式又具有自定义字体的Java/Swing文本组件?

但是,那个问题是关于JTextPane的。似乎JLabel没有getStyledDocument()方法可用于此。

是否有任何方法可以让我们的字体与JLabel配合使用呢?

2个回答

10

使用特定字体:

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

您创建的字体必须首先在单例GraphicsEnvironment中进行注册,才能让所有人都可以访问:

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

谢谢!似乎只需要注册就足以解决问题 :) - Bv202

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接