2010-04-21 15 views
6

È possibile scrivere una GUI in Java che visualizzi correttamente i caratteri giapponesi indipendentemente dalle impostazioni della lingua del sistema operativo su cui viene eseguito?Caratteri giapponesi in una GUI Java

Mi piacerebbe scrivere un programma che sia in grado di farlo ma non sono sicuro di come iniziare a fare questo. Qualsiasi consiglio sarebbe di grande aiuto!

risposta

0

Aggiungi -Dfile.encoding=utf-8 al tuo script da riga di comando che avvia l'applicazione.

+0

Grazie a tutti! Consiglio fantastico! – kakashi

7

Le impostazioni della lingua non sono il problema qui. I caratteri sono.

Java certamente in grado di gestire il testo giapponese, non importa ciò che le impostazioni di sistema sono, se lo sviluppatore non cade nella trappola della seconda della piattaforma di codifica di default utilizzando le cose come FileReader o new String(byte[]).

Ma per visualizzare effettivamente il testo giapponese, è necessario un carattere con caratteri giapponesi e i caratteri non fanno parte di Java. A seconda del sistema operativo, i tipi di carattere compatibili con il giapponese possono far parte dell'installazione predefinita, oppure all'utente può essere richiesto di installarli secondo necessità o potrebbero dover essere installati manualmente.

+0

Brillante, grazie! – kakashi

6

Java può facilmente visualizzare il giapponese indipendentemente dal fatto che il sistema operativo abbia i caratteri installati o meno, ma questo è solo per le applicazioni Swing. Qualsiasi cosa usi la finestra della console richiede i caratteri installati nel sistema operativo.

Passi:

1) Scaricare uno dei font TrueType da qui: http://www.wazu.jp/gallery/Fonts_Japanese2.html

2) utilizzare il seguente codice per consentire ai clienti di swing di utilizzare i font:

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

anche , se vuoi usare letterali giapponesi nel tuo codice sorgente devi compilare con -Dfile.encoding = utf-8. Se si utilizza un IDE per compilare, allora è possibile modificare le impostazioni la seguente schermata (tasto destro del mouse il progetto e selezionare Proprietà per ottenere questa finestra): screenshot

More information is available at this page

+0

Fantastico! Grazie! – kakashi

3

È possibile confezionare un tipo di carattere TrueType con il vostro programma e caricare e utilizzare in componenti Swing in questo modo:

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

Fare attenzione a utilizzare il set di caratteri corretto. Se si compilano i caratteri giapponesi nel codice, è necessario compilare con javac -encoding utf-8 Foo.java. Assicurati anche di usare il charset in modo esplicito quando usi i lettori.

+0

Grazie mille! – kakashi

Problemi correlati