2010-02-02 83 views
5

quiero usar siguientes símbolos para los botones en mi aplicación:símbolos Unicode (flechas) en Java

arrows http://img402.imageshack.us/img402/3176/arrowso.jpg

aquí mi código:

Button goToFirstButton = new Button("\uE318"); 
Button prevPageButton = new Button("\uE312"); 
Button nextPageButton = new Button("\uE313"); 
Button goToLastButton = new Button("\uE319"); 

y el resultado es

result http://img693.imageshack.us/img693/9063/resultbu.jpg

Parece que \ uE318 y \ uE313 son incorrecto. ¿Qué debería usar en su lugar? Para goToLastButton y goToFirstButton Yo prefiero usar estas imágenes

alt text http://img3.imageshack.us/img3/5724/singlearrow.jpg

pero no puedo encontrar, qué código debo usar.

+0

imágenes no son visibles más así que la pregunta es mucho menos útil – Ewoks

Respuesta

8

Sugeriría utilizar Iconos en Botones en lugar de caracteres especiales, porque la capacidad para mostrar puede verse fuertemente afectada por la disponibilidad de fuentes en la estación de trabajo del cliente.

+0

esta es una web -app, el resultado debe ser el mismo para cada os/navegador? – cupakob

+0

Incluso si se trata de una aplicación web, no tiene garantía de que el cliente tenga las fuentes instaladas. A menos que su plan sea generar estas imágenes en el lado del servidor (¿es el caso?) –

+0

no generaré las imágenes :) – cupakob

1

También sugiero usar iconos. No todas las fuentes tienen símbolos para todos los puntos de carácter Unicode.

Puede hacerlo funcionar especificando una fuente en particular. Pero, ¿y si esa fuente se encuentra en las computadoras con Windows 7, pero no en Mac OS X o Linux o Windows XP? Luego, el sistema elegirá otra fuente, según los valores predeterminados del navegador, y es posible que el valor predeterminado no tenga los símbolos que desea.

0

Los archivos fuente de Java están codificados en UTF-8, por lo que puede poner los símbolos que desee directamente en el código fuente (solo copie y pegue desde un visor de fuentes o web), siempre que use un editor decente. No es necesario utilizar esta confusa notación "\ uXXXX". Por ejemplo, he encontrado que esto es útil para las letras griegas utilizadas comúnmente en notación científica (δ, ρ, ψ ...). Incluso puede usarlas como nombres de variables.

Por supuesto, su fuente de elección debe tener los símbolos que desea, de lo contrario no funcionará.

+0

Eso no es estrictamente preciso: los archivos fuente de Java __ pueden ser__ codificados en UTF-8. No le sorprenderá saber que hay una pregunta sobre si deberían estar :) http://stackoverflow.com/questions/2178348/should-source-code-be-saved-in-utf-8-format – McDowell

+0

fuente de Java los archivos pueden tener cualquier codificación compatible con su compilador. UTF-8 * no * se especifica en ninguna parte como la única opción. El JLS solo dice "Los programas se escriben usando el juego de caracteres Unicode". lo que significa que la fuente puede contener cualquier carácter Unicode, pero no especifica una codificación. –

+0

Ah, está bien. Aparentemente, el compilador utiliza la codificación predeterminada del sistema a menos que se especifique lo contrario, por lo que este es un posible problema. –

6

Los puntos de código Unicode que desea utilizar son parte de un private use area, es decir, cada fabricante de fuentes es libre de poner el carácter que desee en cualquier posición. La fuente que utilizó para buscar los caracteres de flecha es simplemente una fuente diferente a la utilizada para mostrar el texto del botón. Si el texto del botón asigna \ uE318 y \ uE313 a algún chino (?) Graphem, entonces eso no es incorrecto, simplemente diferente.

3

Aunque varias personas han argumentado que debe evitar el uso de estos puntos de código porque no puede confiar en que los sistemas de los usuarios tengan una fuente que muestre estos caracteres, la razón por la que obtiene los caracteres incorrectos tiene sido completamente extrañado. Todos los símbolos que intenta dibujar están en el "área de uso privado", lo que significa que los símbolos involucrados serán potencialmente diferentes en cada fuente.

The Unicode standard states:

Área de uso privado (E000 F8FF) * El Área de uso privado no contiene asignaciones de caracteres, por consiguiente, no hay provisión de cartas o listas de nombres de códigos de caracteres para esta área.

Si incrusta la fuente en particular que desea utilizar para asegurarse de que puede utilizar estos puntos de código, está bien.Pero eso significa que debe, de hecho, usar la notación \ u #### en su código, porque insertar los caracteres como Unicode significa directamente que la fuente no tendrá sentido a menos que alguien la vea con la fuente correcta.

En general, es probablemente mejor utilizar iconos a menos que ya tenga una fuente de símbolo que cree que es simplemente muy superior a cualquier trabajo gráfico que haría de otra manera.

3

& # x25C0; & # x25B6;

Hay un par de símbolos cerca de lo que desea en el Geometric Shapes chart. Sin embargo, como han dicho otros, use iconos y manténgase fuera del área de uso privado.

1

Yo sugeriría que si usted está preocupado por la capacidad de la fuente de clientes para mostrar un carácter particular, utilice la siguiente:

private static final HashMap<Character, Font> fontCache = new HashMap<Character, Font>(); 
public static Font getFontThatCanDisplay(char c, int style, float size) { 
    Font f = fontCache.get(c); 
    if (f == null) { 
     f = UIManager.getFont("Label.font"); 
     for (Font font: GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts()) { 
       if (font.canDisplay(c)) { 
        f = font; 
        break; 
       } 
      } 
      fontCache.put(c, f); 
     } 
     return f.deriveFont(style, size); 
    } 
Cuestiones relacionadas