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[editar]
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[editar]
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 la fuente. 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[editar]
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