Crear y Derivar Fuentes
Podemos mostrar una cadena de texto con cualquier fuente disponible en nuestro sistema, en
cualquier estilo y tamaño que elijamos. Para determinar las fuentes disponibles en
nuestro sistema, podemos llamar al método
GraphicsEnvironment.getAvailableFontFamilyNames. Este método devuelve un array
de strings que contiene los nombres de familia de las fuentes disponibles. Se puede usar c
ualquiera de las cadenas, junto con un argumento tamaño y otro de estilo, para crear
un nuevo objeto Font. Después de crear un objeto
Font, podemos cambiar su nombre de familia, su tamaño o su estilo para crear
una fuente personalizada.
Ejemplo: FontSelection
El siguiente applet nos permite cambiar la fuente, el tamaño y el estilo del texto
dibujado.
Esta es una imagen del GUI del applet. Para ajecutar el applet, pulsa
sobre ella. El applet aparecerá en una nueva ventana del navegador.
El código completo del applet está en FontSelection.java
.
El método getAvailableFontFamilyNames de
GraphicsEnvironment devuelve los nombres de familia de todas las fuentes
disponibles en nuestro sistema.
GraphicsEnvironment gEnv =
GraphicsEnvironment.getLocalGraphicsEnvironment();
String envfonts[] = gEnv.getAvailableFontFamilyNames();
Vector vector = new Vector();
for ( int i = 1; i < envfonts.length; i++ ) {
vector.addElement(envfonts[i]);
}
El objeto Font inicial se crea con estilo
Font.PLAIN y tamaño 10. Los otros estilos disponibles son ITALIC, BOLD y
BOLD+ITALIC.
Font thisFont;
...
thisFont = new Font("Arial", Font.PLAIN, 10);
Un nuevo Font se crea a partir de un nombre de fuente, un estilo y
un tamaño.
public void changeFont(String f, int st, String si){
Integer newSize = new Integer(si);
int size = newSize.intValue();
thisFont = new Font(f, st, size);
repaint();
}
Para usar la misma familia de fuentes, pero cambiando uno o los dos atributos de estilo y
tamaño, podemos llamar a uno de los métodos deriveFont.
Para controlar la fuente utilizada para renderizar texto, podemos seleccionar el atributo
font en el contexto Graphics2D antes de dibujarlo. Este atributo se
selecciona pasando un objeto Font al método
setFont. En este ejemplo, el atributo font se configura para usar un objeto
font recientemente construido y luego se dibuja la cadena de texto
en el centro del componente usando la fuente especificada.
En el método paint, el atributo font del contecto
Graphics2D se configura como el nuevo Font. La cadena se
dibuja en el centro del componente con la nueva fuente.
g2.setFont(thisFont);
String change = "Pick a font, size, and style to change me";
FontMetrics metrics = g2.getFontMetrics();
int width = metrics.stringWidth( change );
int height = metrics.getHeight();
g2.drawString( change, w/2-width/2, h/2-height/2 );
|
Nota:
Debido al bug #
4155852, FontSelection podría no funcionar de forma apropiada con
todos los nombres de fuentes devueltos por la llamada a getFontFamilyNames. La forma
podría no corresponder con cambios en el tamaño o el estilo y el texto podría no
mostrarse cuando se selecionan algunos nombres de fuentes. En general, Courier y
Helvetica funcionan bien. Mientras tanto, compruebalo periódicamente para ver si se han
resuelto estos problemas.
|