2012-10-21 9 views
13

Ich muss benutzerdefinierte Schriftarten (ttf) in meiner Java Swing-Anwendung verwenden. Wie füge ich sie meinem Paket hinzu und verwende sie?Hinzufügen von Schriftarten zur Swing-Anwendung und Einfügen in Paket

Mean while, ich installiere sie nur in Windows und dann benutze ich sie, aber ich wünsche nicht, dass die Verwendung der Anwendung so kompliziert sein wird, ist es nicht sehr bequem, den Benutzer zu sagen, Schriftarten vorher zu installieren meine Anwendung verwenden.

+0

Es ist vielleicht eine doppelte Frage finden Sie [hier] (http://stackoverflow.com/questions/5652344/how-can-i-use-a-custom-font- in-Java). – linski

+1

@DanM Wenn Sie ein Kopfgeld absichtlich geöffnet haben, weil Sie mit den aktuellen Antworten nicht zufrieden sind, sollten Sie klären, warum es Ihre Frage nicht beantwortet und/oder welche zusätzlichen Informationen Sie benötigen. – assylias

+0

möglich Duplikat von [Einbetten einer Schriftart in Java] (http://stackoverflow.com/questions/4487871/embedding-a-font-in-java) –

Antwort

16

Man könnte sie über eine InputStream laden:

InputStream is = MyClass.class.getResourceAsStream("TestFont.ttf"); 
Font font = Font.createFont(Font.TRUETYPE_FONT, is); 

Diese geladene Schrift hat keine vordefinierten Schrifteinstellungen so zu verwenden, würden Sie zu tun haben:

Font sizedFont = font.deriveFont(12f); 
myLabel.setFont(sizedFont); 

See:

Physical and Logical Fonts

+0

Wo muss ich die TestFont.ttf-Datei? – DanM

+0

Für das obige Beispiel muss es an der gleichen Stelle wie die Klassendatei sein. – Reimeus

+1

Oder wenn es in einem Paket ist, können Sie auf es mit dem vollständigen Paketnamen zugreifen. zB: Ich habe die ttf-Datei _foo.ttf_ im Paket _foo.bar.master.cork_, ich würde darauf zugreifen über 'getResourceAsStream ("/foo/bar/master/cork/foo.ttf ")'. Was das bedeutet ist: Setzen Sie einen Schrägstrich am Anfang, ersetzen Sie jeden Punkt mit einem Schrägstrich (außer im Dateinamen), und einen Schrägstrich am Ende des Pfades **, aber vor der Datei. ** – TheBrenny

7

Wie Reimeus sagte, können Sie eineverwenden.

File font_file = new File("TestFont.ttf"); 
Font font = Font.createFont(Font.TRUETYPE_FONT, font_file); 

In beiden Fällen können Sie Ihre Schriftdateien entweder im Wurzelverzeichnis des Projekts oder einem Unterverzeichnis setzen würde: Sie können auch eine File verwenden. Das Stammverzeichnis sollte wahrscheinlich das Verzeichnis sein, aus dem Ihr Programm ausgeführt wird. wenn Sie eine Verzeichnisstruktur wie zum Beispiel haben:

My_Program 
| 
|-Fonts 
| |-TestFont.ttf 
|-bin 
    |-prog.class 

würden Sie Ihr Programm mit aus dem My_Program Verzeichnis mit java bin/prog laufen. Dann würde in Ihrem Code der Pfad und der Name der Datei, die an die InputStream oder File übergeben werden, "Fonts/TestFont.ttf" sein.

0

Try this:

@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(); 
    } 
} 
Verwandte Themen