在 Java 中使用 setFont

Rupam Yadav 2023年1月30日 2022年5月11日
  1. 在 JFrame 中使用 setFont() 设置新字体
  2. 使用 setFont()getFont().deriveFont() 在现有字体中设置样式
  3. 使用 setFont()Font.createFont() 设置自定义字体
在 Java 中使用 setFont

在本文中,我们将学习如何使用从 javax.swing.JFrame 类中的 java.awt.Container 继承的 setFont() 方法。顾名思义,该函数将字体设置为 JFrame 的组件。

在 JFrame 中使用 setFont() 设置新字体

在这个例子中,我们为 JFrame 组件设置了一种新字体。

首先,我们创建一个 JFrame 对象和两个 JLabel 类型的标签。我们用它们的文本初始化标签。

现在我们创建一个名为 myFont1Font 对象,在构造函数中,我们传递三个参数,第一个是我们要设置的字体,第二个是可以使用 Font 类调用的字体样式,以及最后一个参数是 int 类型值的字体大小。

我们创建另一个 Font 对象,myFont2,并为它设置一个不同的字体值。我们使用 JLabel 对象调用 setFont() 函数并将 Font 对象传递给它们。

之后,我们使用 setBounds() 函数设置组件的位置和大小,并使用 add() 将它们添加到 JFrame。最后,我们设置 JFrame 的大小和可见性。

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

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);

    }
}

输出:

Java setFont

使用 setFont()getFont().deriveFont() 在现有字体中设置样式

在前面的示例中,我们看到了如何使用 setFont() 设置新字体,但我们也可以使用此方法为 JFrame 组件的现有字体设置新样式。

为此,我们首先使用 component.getFont() 获取组件的字体,然后调用接受我们想要应用的样式的 deriveFont() 函数。我们通过 Font.ITALIC 使 JLabel 上的字体变为斜体。

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

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);

    }
}

输出:

Java setFont

使用 setFont()Font.createFont() 设置自定义字体

在这个例子中,我们设置了一个自定义字体,这与我们已经在类中设置字体的第一个程序不同。

为了获取自定义字体,我们下载它并将其存储在我们项目目录的根目录中。我们在这个例子中使用 oswald.ttf 字体文件。

我们创建一个 JLabel 并初始化它以获取我们称为 BufferedInputStream 的字体文件,并传递一个 FileInputStream 的对象,该对象将字体文件的路径作为参数。现在我们得到了一个 InputStream 对象。

要创建新字体,我们从 Font 类调用 createFont(),并将字体资源类型作为第一个参数传递,将 InputStream 作为第二个参数传递。我们使用 deriveFont() 方法将自定义字体设置为 JLabel 组件。

毕竟,现在我们将组件添加到 JFrame。输出显示自定义字体。

package sample;

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

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);

    }
}

输出:

Java setFont

Author: Rupam Yadav
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

相关文章 - Java Swing

相关文章 - Java JLabel