2010-04-21 15 views
6

Czy można napisać GUI w Javie, który wyświetlałby japońskie czcionki poprawnie, niezależnie od ustawień językowych systemu operacyjnego, na którym jest uruchamiany?Japońskie czcionki w GUI Java

Chciałbym napisać program, który jest w stanie to zrobić, ale nie jestem pewien, jak zacząć o tym mówić. Każda rada byłaby ogromną pomocą!

Odpowiedz

0

Dodaj -Dfile.encoding=utf-8 do skryptu linii poleceń, który uruchamia aplikację.

+0

Dziękuję wszystkim! Fantastyczna rada! – kakashi

7

Ustawienia językowe nie są tutaj problemem. Czcionki są.

Java na pewno poradzi sobie tekst japoński, bez względu na to, jakie są ustawienia systemowe, jeśli deweloper nie wpaść w pułapkę w zależności od domyślnego kodowania platformy za pomocą rzeczy jak FileReader lub new String(byte[]).

Ale aby wyświetlić tekst w języku japońskim, potrzebna jest czcionka ze znakami japońskimi, a czcionki nie są częścią języka Java. W zależności od systemu operacyjnego, czcionki z obsługą języka japońskiego mogą być częścią domyślnej instalacji lub użytkownik może zostać poproszony o zainstalowanie ich w razie potrzeby lub może być zainstalowany ręcznie.

+0

Świetne, dziękuję! – kakashi

6

Java może łatwo wyświetlać japoński bez względu na to, czy system operacyjny ma zainstalowane czcionki, czy nie, ale jest to tylko w przypadku aplikacji Swing. Wszystko za pomocą okna konsoli wymaga czcionek zainstalowanych w systemie operacyjnym.

Kroki:

1) Pobierz jedną z czcionek TrueType stąd: http://www.wazu.jp/gallery/Fonts_Japanese2.html

2) Za pomocą poniższego kodu, aby umożliwić swoim klientom huśtawka używać czcionek:

InputStream fontStream = getClass().getResourceAsStream("/locationoffontonclasspath/myfontname.ttf"); 
Font japaneseEnabledFont = null; 
boolean japaneseDisplayEnabled = false; 
try { 
    japaneseEnabledFont = Font.createFont(Font.TRUETYPE_FONT, fontStream); 
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(japaneseEnabledFont); 
    japaneseDisplayEnabled = true; 
} catch (Exception e) { 
    // handle exceptions here 
} finally { 
    if (fontStream != null) { 
     try {fontStream.close();} catch (Exception e1) {} 
    } 
} 

if (japaneseDisplayEnabled) { 
    ..... 
} 

także , jeśli chcesz używać literałów japońskich w swoim kodzie źródłowym, musisz skompilować z -Dfile.encoding = utf-8. W przypadku korzystania z IDE do kompilacji, a następnie można zmienić ustawienia na następnym ekranie (prawy przycisk myszy projekt i wybierz Właściwości, aby uzyskać to okno): screenshot

More information is available at this page

+0

Awesome! Dziękuję Ci! – kakashi

3

Można spakować czcionki TrueType z programem i Załaduj i używaj go w komponentach Swing:

// Create a label in Japanese. 
String message = "かつ、尊厳と権利とについて平等である。"; 
JLabel label = new JLabel(message); 

// Load the TrueType font with Japanese characters and apply it. 
File file = new File("msmincho.ttf"); 
Font font = Font.createFont(Font.TRUETYPE_FONT, file); 
font = font.deriveFont(Font.PLAIN, 14f); 
label.setFont(font); 

Należy używać poprawnego zestawu znaków. Jeśli kompilujesz japońskie znaki w kodzie, powinieneś skompilować je z javac -encoding utf-8 Foo.java. Należy również wyraźnie używać zestawu znaków podczas korzystania z Czytników.

+0

Dziękuję bardzo! – kakashi