2010-04-21 7 views
6

Est-il possible d'écrire une interface graphique en Java qui afficherait correctement les polices japonaises quels que soient les paramètres de langue du système d'exploitation sur lequel elle est exécutée? Je voudrais écrire un programme qui est capable de faire cela, mais je ne suis pas sûr de savoir comment commencer à ce sujet. Tout conseil serait une aide énorme!Polices japonaises dans une interface graphique Java

Répondre

0

Ajoutez -Dfile.encoding=utf-8 au script de ligne de commande qui lance l'application.

+0

Merci à tous! Un conseil fantastique! – kakashi

7

Les paramètres de langue ne sont pas le problème ici. Les polices sont. Java peut certainement gérer le texte japonais, quels que soient les paramètres système, si le développeur ne tombe pas dans le piège de dépendre de l'encodage par défaut de la plate-forme en utilisant des choses comme FileReader ou new String(byte[]). Mais pour afficher réellement le texte japonais, vous avez besoin d'une police qui a des caractères japonais, et les polices ne font pas partie de Java. Selon le système d'exploitation, les polices japonaises peuvent faire partie de l'installation par défaut, ou l'utilisateur peut être invité à les installer si nécessaire, ou elles peuvent devoir être installées manuellement.

+0

Génial, merci! – kakashi

6

Java peut facilement afficher le japonais indépendamment du fait que le système d'exploitation a les polices installées ou non, mais c'est uniquement pour les applications Swing. Tout ce qui utilise la fenêtre de la console nécessite des polices installées dans le système d'exploitation.

Étapes:

1) Téléchargez l'une des polices TrueType d'ici: http://www.wazu.jp/gallery/Fonts_Japanese2.html

2) Utilisez le code suivant pour permettre à vos clients de swing à utiliser vos polices:

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) { 
    ..... 
} 

également , si vous souhaitez utiliser des littéraux japonais dans votre code source, vous devez compiler avec -Dfile.encoding = utf-8. Si vous utilisez un IDE pour compiler vous pouvez modifier les paramètres de l'écran suivant (clic droit sur le projet et sélectionnez propriétés pour obtenir cette fenêtre): screenshot

More information is available at this page

+0

Génial! Je vous remercie! – kakashi

3

Vous pouvez emballer une police TrueType avec votre programme et charger et l'utiliser dans les composants Swing comme suit:

// 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); 

Veillez à utiliser le jeu de caractères correct. Si vous compilez des caractères japonais dans le code, vous devez compiler avec javac -encoding utf-8 Foo.java. Veillez également à utiliser explicitement le jeu de caractères lors de l'utilisation des lecteurs.

+0

Merci beaucoup! – kakashi

Questions connexes