我需要在我的 Java Swing 应用程序中使用自定义字体 (ttf)。如何将它们添加到我的包中并使用它们?
同时,我只是将它们安装在windows中然后使用它们,但我不希望应用程序的使用会如此复杂,在使用我的应用程序之前告诉用户安装字体不是很方便。
我需要在我的 Java Swing 应用程序中使用自定义字体 (ttf)。如何将它们添加到我的包中并使用它们?
同时,我只是将它们安装在windows中然后使用它们,但我不希望应用程序的使用会如此复杂,在使用我的应用程序之前告诉用户安装字体不是很方便。
您可以通过以下方式加载它们InputStream
:
InputStream is = MyClass.class.getResourceAsStream("TestFont.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, is);
此加载的字体没有预定义的字体设置,因此要使用,您必须这样做:
Font sizedFont = font.deriveFont(12f);
myLabel.setFont(sizedFont);
看:
正如 Reimeus 所说,您可以使用InputStream
. 您还可以使用File
:
File font_file = new File("TestFont.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, font_file);
在这两种情况下,您都可以将字体文件放在项目的根目录或某个子目录中。根目录可能应该是运行程序的目录。例如,如果您的目录结构如下:
My_Program
|
|-Fonts
| |-TestFont.ttf
|-bin
|-prog.class
您将从My_Program
目录中运行您的程序java bin/prog
。然后在您的代码中传递给InputStream
or的文件路径和名称File
将是"Fonts/TestFont.ttf"
.
尝试这个:
@Override
public Font getFont() {
try {
InputStream is = GUI.class.getResourceAsStream("TestFont.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, is);
return font;
} catch (FontFormatException | IOException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
return super.getFont();
}
}