我需要在我的Java Swing應用程序中使用自定義字體(ttf)。我如何將它們添加到我的包中並使用它們?將字體添加到Swing應用程序幷包含在包中
同時,我只是將它們安裝在窗口中,然後使用它們,但我不希望應用程序的使用情況如此複雜,因此不太方便告訴用戶在安裝字體之前用我的應用程序。
我需要在我的Java Swing應用程序中使用自定義字體(ttf)。我如何將它們添加到我的包中並使用它們?將字體添加到Swing應用程序幷包含在包中
同時,我只是將它們安裝在窗口中,然後使用它們,但我不希望應用程序的使用情況如此複雜,因此不太方便告訴用戶在安裝字體之前用我的應用程序。
你可以通過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();
}
}
這可能是重複的問題,請參見[這裏](http://stackoverflow.com/questions/5652344/how-can-i-use-a-custom-font-在-JAVA)。 – linski
@DanM如果您因目前的回答不滿意而打開獎金,您應該澄清爲什麼它不能回答您的問題和/或您需要哪些其他信息。 – assylias
[在Java中嵌入字體]可能的重複(http://stackoverflow.com/questions/4487871/embedding-a-font-in-java) –