Advertising:
Fuentes de texto en Java
Veamos aquí como ver las fuentes de texto disponibles para nuestra aplicación java y un pequeño ejemplo de cómo ir mostrándolas en un JLabel.
Listar las fuentes disponibles[edit]
El código que nos muestra todos los nombres de fuentes disponibles es el siquiente
String[] fontNames=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); System.out.println(Arrays.toString(fontNames));
Esto sacará un listado largo como el siguiente
[1942 report, Aaron's Hand, Accidental Presidency, Action Man, Action Man Extended, Action Man Shaded, ...]
Usar fuente de texto[edit]
Para usar una de estas fuentes, podemos hacer un new de la clase Font, pasándole tres parámetros
- Nombre de la fuente. Uno de los String obtenidos con la llamada anterior.
- Estilo de funte. Una constante definida en la clase Font y que puede ser Font.PLAIN, Font.BOLD, Font.ITALIC, ...
- El tamaño de la fuente, un entero.
Por ejemplo
Font font = new Font("Agency FB", Font.BOLD, 14);
Y ahora solo tendremos que pasarla a cualquiera de nuestros componentes javax.swing o java.awt que tenga el método setFont(), por ejemplo, un JLabel
JLabel label = new JLabel("un texto"); label.setFont(font);
Un ejemplo largo[edit]
El siguiente código, disponible en FontsExample.java recorre todas las posibles fuentes y visualiza cada una de ellas en una ventana durante un segundo, mostrando el nombre de la fuente.
package com.chuidiang.ejemplos.fonts; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.util.Arrays; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; /** * Example of Fonts. * * @author Chuidiang * */ public class FontsExample { public static void main(String[] args) throws InterruptedException { // List all available fonts. String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment() .getAvailableFontFamilyNames(); System.out.println(Arrays.toString(fontNames)); // A windows with a label. JFrame frame = new JFrame("Fonts Example"); JLabel label = new JLabel(); label.setHorizontalAlignment(SwingConstants.CENTER); frame.getContentPane().add(label); frame.setSize(400, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); // Show a text for each font for (String font : fontNames) { label.setText("Hi, I'm " + font); label.setFont(new Font(font, Font.PLAIN, 15)); Thread.sleep(1000); } } }
La siguiente es una captura de la ventana mostrada por el código anterior cuando está mostrando la fuente action man extended