2009-04-06 19 views
8

Estoy jugando con DefaultStyledDocument y estoy tratando de encontrar la manera correcta de establecer un estilo para la fuente monoespaciado correcta. Por "adecuada" me refiero a que la fuente seleccionada es: (¿hay una forma estándar de hacer esto en Java)la manera correcta de seleccionar fuentes monoespaciadas en Swing

  1. Una fuente de espacio fijo que existe en la máquina del usuario
  2. Una fuente especificada por las preferencias del usuario
  3. Si no hay una fuente especificada, recurrirá a la fuente monoespaciada estándar ("Monospaced").

Esto funciona:

StyleConstants.setFontFamily(mainStyle, "Monospaced"); 

y esto también funciona:

StyleConstants.setFontFamily(mainStyle, "Lucida Console"); 

pero me parece que no puede encontrar la manera de saber si la familia de fuentes en cuestión tanto existe en el máquina del usuario (no hay valor de retorno para setFontFamily) y es una fuente monoespaciada. Si uso "Lucida Consoleq", parece usar la que sea la fuente predeterminada.

Respuesta

2

creo que desea que esta

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 

Ver javadoc

+1

¿Tengo que enumerarlos todos? no hay una forma de probar solo para ver si existe? –

3

Véase el javadoc para java.awt.Font. Parece que puede usar el método public static Font decode(String str) para lograr lo que desea. El último párrafo de javadoc para este método dice:

El tamaño predeterminado es 12 y el estilo predeterminado es NORMAL. Si str no especifica un tamaño válido, la fuente devuelta tiene un tamaño de 12. Si str no especifica un estilo válido, la fuente devuelta tiene un estilo de PLAIN. Si lo hace no especifica un nombre de fuente válido en el argumento str, este método devolverá una fuente con el nombre de familia "Diálogo". Para determinar qué nombres de familia de fuente están disponibles en su sistema, use el método GraphicsEnvironment.getAvailableFontFamilyNames() . Si str es nulo, una nueva fuente es devuelta con el nombre de familia "Diálogo", un tamaño de 12 y un estilo PLANO .

Si la familia de fuentes que está buscando no existe, obtendrá "Diálogo" devuelto. Siempre que no obtenga eso como un valor de retorno, la familia de fuentes existe.

3

Monospaced es un nombre virtual (como Dialog) que Java asignará a la fuente predeterminada de ancho fijo del sistema.

+1

Pero no quiero el valor predeterminado, porque parece bastante pésimo. Quiero recurrir al valor predeterminado si no puedo encontrar el que quiero. –

Cuestiones relacionadas