将字体添加到Swing应用程序并包含在包中

我需要在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 

你可以使用java bin/progMy_Program目录运行你的程序。 然后在您的代码中,传递给InputStreamFile的文件路径和名称将是"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(); } }