El siguiente applet nos permite cambiar la fuente, el tamaño y el estilo del texto dibujado.El código completo del applet está en FontSelection.java.
Esta es una imagen del GUI del applet. Para ajecutar el appler, pulsa sobre ella. El applet aparecerá en una nueva ventana del navegador.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 s ecrea 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 fuentem 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.