因此,我试图制作一个简单的应用程序,然后出现一个窗口。问题是我需要一些特殊的字体,我怀疑该字体是否会安装在用户的操作系统上,所以我必须从文件中加载它。
我已经读了无数的文章,并且在这个问题上停留了很长时间,而且我不确定字体是否未加载或未注册。我也对要使用的“流”的类型感到困惑,因为无数次尝试InputStream
,FileInputStream
和BufferStream
都没有结果。
正在将字体 复制到输出目录。这是我的项目结构
<packages-with-classes>
fonts
-> gameFont.ttf
这是我正在使用的代码
displayArea = new JTextArea();
displayArea.setEditable(false);
//FONT to give graphics (plz help me)
GraphicsEnvironment ge = null;
try {
//ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
/*Font initFont = Font.createFont(Font.TRUETYPE_FONT, Main.class.getClassLoader().getResourceAsStream("/fonts/gameFont.ttf") );
Font fontBase = initFont.deriveFont(Font.PLAIN, 20);*/
Font gameFnt = Font.createFont(Font.TRUETYPE_FONT, Main.class.getClassLoader().getResourceAsStream("fonts/gameFont.ttf")).deriveFont(Font.PLAIN, 12f);
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(gameFnt);
displayArea.setFont(gameFnt);
} catch (IOException e) {
e.printStackTrace();
} catch(FontFormatException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
因此,在经历了非常非常头痛之后,我才开始工作:)
以下是其他人遇到相同问题的代码:
InputStream fontStream = Main.class.getResourceAsStream("/fonts/gameFont.ttf");
try {
Font gameFont = Font.createFont(Font.TRUETYPE_FONT,fontStream);
gameFont=gameFont.deriveFont(Font.PLAIN, 14);
displayArea.setFont(gameFont);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
}