在 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