迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

在 Java 中使用 setFont

作者:迹忆客 最近更新:2023/09/17 浏览次数:

在本文中,我们将学习如何使用从 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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便