Usando setFont en Java

Rupam Yadav 12 octubre 2023
  1. Uso de setFont() para establecer una nueva fuente en JFrame
  2. Uso de setFont() y getFont().deriveFont() para establecer un estilo en la fuente existente
  3. Uso de setFont() y Font.createFont() para establecer una fuente personalizada
Usando setFont en Java

En este artículo, aprenderemos cómo podemos usar el método setFont() heredado de java.awt.Container en la clase javax.swing.JFrame. Como sugiere el nombre, esta función establece la fuente de los componentes de JFrame.

Uso de setFont() para establecer una nueva fuente en JFrame

En este ejemplo, configuramos una nueva fuente para un componente JFrame.

Primero, creamos un objeto JFrame y dos etiquetas del tipo JLabel. Inicializamos las etiquetas con su texto.

Ahora creamos un objeto Font llamado myFont1, y en el constructor, pasamos tres argumentos, primero es la fuente que queremos establecer, segundo es el estilo de fuente que se puede llamar usando la clase Font, y el El último argumento es el tamaño de fuente que es un valor de tipo int.

Creamos otro objeto Font, myFont2, y le asignamos un valor de fuente diferente. Llamamos a la función setFont() usando los objetos JLabel y les pasamos los objetos Font.

Después de eso, establecemos la posición y el tamaño de los componentes usando la función setBounds() y los agregamos al JFrame usando add(). Por fin, establecemos el tamaño y la visibilidad del JFrame.

import java.awt.*;
import javax.swing.*;

public class Main {
  public static void main(String[] args) {
    JFrame jFrame = new JFrame("Set Font Example");
    JLabel jLabel1, jLabel2;

    jLabel1 = new JLabel("Label with Serif Font");
    jLabel2 = new JLabel("Label with Arial Font");

    Font myFont1 = new Font("Serif", Font.BOLD, 12);
    jLabel1.setFont(myFont1);

    Font myFont2 = new Font("Arial", Font.BOLD, 12);
    jLabel2.setFont(myFont2);

    jLabel1.setBounds(80, 100, 120, 30);
    jLabel2.setBounds(80, 80, 120, 30);

    jFrame.add(jLabel1);
    jFrame.add(jLabel2);
    jFrame.setSize(300, 300);

    jFrame.setLayout(null);
    jFrame.setVisible(true);
  }
}

Producción:

Java setFont

Uso de setFont() y getFont().deriveFont() para establecer un estilo en la fuente existente

En el ejemplo anterior, vimos cómo se puede usar setFont() para establecer una nueva fuente, pero también podemos usar este método para establecer un nuevo estilo para la fuente existente del componente JFrame.

Para lograr esto, primero obtenemos la fuente del componente usando el component.getFont() y llamamos a la función deriveFont() que acepta el estilo que queremos aplicar. Pasamos Font.ITALIC para convertir la fuente en la JLabel en cursiva.

import java.awt.*;
import javax.swing.*;

public class Main {
  public static void main(String[] args) {
    JFrame f = new JFrame("Set Font Example");
    JLabel jLabel1;

    jLabel1 = new JLabel("Label with Italic Style");

    jLabel1.setFont(jLabel1.getFont().deriveFont(Font.ITALIC));
    jLabel1.setBounds(80, 100, 120, 30);

    f.add(jLabel1);
    f.setSize(300, 300);

    f.setLayout(null);
    f.setVisible(true);
  }
}

Producción:

Java setFont

Uso de setFont() y Font.createFont() para establecer una fuente personalizada

En este ejemplo, configuramos una fuente personalizada, a diferencia del primer programa donde ya configuramos la fuente en la clase.

Para obtener la fuente personalizada, la descargamos y la almacenamos en la raíz de nuestro directorio de proyectos. Usamos el archivo de fuente oswald.ttf en este ejemplo.

Creamos un JLabel y lo inicializamos para obtener el archivo de fuente que llamamos BufferedInputStream y pasamos un objeto de FileInputStream que toma la ruta del archivo de fuente como argumento. Ahora obtenemos un objeto de InputStream.

Para crear una nueva fuente, llamamos a createFont() de la clase Font y pasamos el tipo de recurso de fuente como primer argumento y el InputStream como segundo argumento. Configuramos la fuente personalizada al componente JLabel usando el método deriveFont().

Después de todo eso, ahora agregamos el componente al JFrame. La salida muestra la fuente personalizada.

package sample;

import java.awt.*;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.*;

public class Main {
  public static void main(String[] args) {
    JFrame f = new JFrame("Set Font Example");
    JLabel jLabel;

    jLabel = new JLabel("Label with a Custom Font");

    try {
      InputStream inputStream = new BufferedInputStream(new FileInputStream("oswald.ttf"));

      Font font = Font.createFont(Font.TRUETYPE_FONT, inputStream);

      jLabel.setFont(font.deriveFont(Font.BOLD, 12f));

    } catch (FontFormatException | IOException e) {
      e.printStackTrace();
    }

    jLabel.setBounds(80, 100, 120, 30);

    f.add(jLabel);
    f.setSize(300, 300);

    f.setLayout(null);
    f.setVisible(true);
  }
}

Producción:

Java setFont

Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Swing

Artículo relacionado - Java JLabel