我需要在我的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
或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();
}
}