在我们的 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 版本中运行,因此仅仅要求更新并不是一个选择。
一种选择是在计算机上安装字体,这是我们不喜欢做的。我发现的最好的解决方案是这个:如何创建一个既具有样式又具有自定义字体的 Java/Swing 文本组件? https://stackoverflow.com/questions/456742/how-can-i-create-a-java-swing-text-component-that-is-both-styled-and-has-a-custo
然而,这个问题是关于JTextPane
. A JLabel
似乎没有getStyledDocument()
我可以使用的方法。
有什么办法让我们的字体与JLabel
?
要使用某种字体:
<html><head><style type="text/css">
body { font-family: Cool; } </style></head><body>...
您创建的字体必须首先在单例 GraphicsEnvironment 中注册才能供所有人访问:
GraphicsEnvironment genv = GraphicsEnvironment.getLocalGraphicsEnvironment();
genv.registerFont(font);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)