2010-04-21 38 views
6

¿Es posible escribir una GUI en Java que muestre las fuentes japonesas correctamente independientemente de la configuración de idioma del sistema operativo en el que se está ejecutando?Fuentes japonesas en una GUI Java

Me gustaría escribir un programa que sea capaz de hacer esto pero no estoy seguro de cómo empezar a hacerlo. ¡Cualquier consejo sería de gran ayuda!

Respuesta

0

Agregue -Dfile.encoding=utf-8 a su script de línea de comandos que está iniciando la aplicación.

+0

Gracias a todos! Fantástico consejo! – kakashi

7

La configuración del idioma no es el problema aquí. Las fuentes son

Java ciertamente puede manejar texto en japonés, sin importar la configuración del sistema, si el desarrollador no cae en la trampa de depender de la codificación predeterminada de la plataforma usando cosas como FileReader o new String(byte[]).

Pero para mostrar realmente el texto en japonés, necesita una fuente que tenga caracteres japoneses, y las fuentes no sean parte de Java. Dependiendo del sistema operativo, las fuentes compatibles con japonés pueden ser parte de la instalación predeterminada, o se puede solicitar al usuario que las instale según sea necesario, o pueden tener que instalarse manualmente.

+0

¡Brillante, gracias! – kakashi

6

Java puede mostrar fácilmente japonés independientemente de si el sistema operativo tiene las fuentes instaladas o no, pero esto es solo para aplicaciones Swing. Cualquier cosa que use la ventana de la consola requiere fuentes instaladas en el sistema operativo.

Pasos:

1) Descargar una de las fuentes TrueType desde aquí: http://www.wazu.jp/gallery/Fonts_Japanese2.html

2) Utilice el siguiente código para permitir a sus clientes oscilación a utilizar sus fuentes:

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

también , si desea usar literales japoneses en su código fuente, debe compilar con -Dfile.encoding = utf-8. Si se utiliza un IDE para compilar a continuación, puede cambiar la configuración de la siguiente pantalla (haga clic derecho en el proyecto y seleccione propiedades para obtener esta ventana): screenshot

More information is available at this page

+0

¡Impresionante! ¡Gracias! – kakashi

3

Puede empaquetar una fuente TrueType con su programa y cárguelo y úselo en componentes Swing de la siguiente manera:

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

Tenga cuidado de utilizar el juego de caracteres correcto. Si compila caracteres japoneses en el código, debe compilar con javac -encoding utf-8 Foo.java. También asegúrese de usar el juego de caracteres explícitamente cuando use Readers.

+0

¡Muchas gracias! – kakashi