2012-10-21 15 views
13

Potrzebuję użyć niestandardowych czcionek (ttf) w mojej aplikacji Java Swing. Jak mogę dodać je do mojego pakietu i używać?Dodawanie czcionek do aplikacji Swing i uwzględnianie w pakiecie

Podsumowując, po prostu instaluję je w oknach, a następnie używam ich, ale nie chcę, aby korzystanie z aplikacji było tak skomplikowane, nie jest zbyt wygodne, aby powiedzieć użytkownikowi, aby zainstalować czcionki przed za pomocą mojej aplikacji.

+0

To może duplikat pytanie, patrz [tutaj] (http://stackoverflow.com/questions/5652344/how-can-i-use-a-custom-font- in-java). – linski

+1

@DanM Jeśli celowo otworzyłeś nagrodę, ponieważ nie jesteś zadowolony z bieżących odpowiedzi, powinieneś wyjaśnić, dlaczego nie odpowiada na twoje pytanie i/lub jakich dodatkowych informacji potrzebujesz. – assylias

+0

możliwy duplikat [osadzania czcionki w Javie] (http://stackoverflow.com/questions/4487871/embedding-a-font-in-java) –

Odpowiedz

16

Można załadować je poprzez InputStream:

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

Ten załadowany czcionka ma predefiniowane ustawienia czcionek więc po użyciu, trzeba by zrobić:

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

Patrz:

Physical and Logical Fonts

+0

Gdzie muszę umieścić plik TestFont.ttf? – DanM

+0

Dla powyższego przykładu musi znajdować się w tej samej lokalizacji, co plik klasy. – Reimeus

+1

Lub jeśli jest w pakiecie, możesz uzyskać do niego dostęp za pomocą pełnej nazwy pakietu. na przykład: mam plik tff _foo.ttf_ w pakiecie _foo.bar.master.cork_, chciałbym uzyskać do niego dostęp przez 'getResourceAsStream ("/foo/bar/master/cork/foo.ttf ")'. Oznacza to: umieść przedni ukośnik na początku, zamień każdą kropkę na ukośnik (z wyjątkiem nazwy pliku) i ukośnik na końcu ścieżki **, ale przed plikiem. ** – TheBrenny

7

Jak powiedział Reimeus, można użyć numeru InputStream. Można również użyć File:

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

W obu przypadkach będzie można umieścić pliki czcionek ani w katalogu głównym projektu lub jakiegoś podkatalogu. Katalog główny powinien prawdopodobnie być katalogiem, z którego uruchamiany jest twój program. Na przykład, jeśli masz strukturę katalogów jak:

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

chcesz uruchomić program z katalogu z My_Program z java bin/prog. Następnie w kodzie ścieżka pliku i nazwa do przekazania do InputStream lub File będzie "Fonts/TestFont.ttf".

0

Spróbuj tego:

@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(); 
    } 
} 
Powiązane problemy