Java での setFont の使用

Rupam Yadav 2023年10月12日
  1. setFont() を使用して JFrame に新しいフォントを設定する
  2. setFont() および getFont().deriveFont() を使用して既存のフォントにスタイルを設定する
  3. setFont() および Font.createFont() を使用してカスタムフォントを設定する
Java での setFont の使用

この記事では、javax.swing.JFrame クラスの java.awt.Container から継承された setFont() メソッドを使用する方法を学習します。名前が示すように、この関数はフォントを JFrame のコンポーネントに設定します。

setFont() を使用して JFrame に新しいフォントを設定する

この例では、新しいフォントを JFrame コンポーネントに設定します。

まず、JFrame オブジェクトと JLabel タイプの 2つのラベルを作成します。ラベルをテキストで初期化します。

次に、myFont1 という Font オブジェクトを作成し、コンストラクターで 3つの引数を渡します。最初は設定するフォント、2 番目は Font クラスを使用して呼び出すことができるフォントスタイル、そして最後の引数は、int タイプの値であるフォントサイズです。

別の Font オブジェクト myFont2 を作成し、それに別のフォント値を渡すように設定します。JLabel オブジェクトを使用して setFont() 関数を呼び出し、Font オブジェクトをそれらに渡します。

その後、setBounds() 関数を使用してコンポーネントの位置とサイズを設定し、add() を使用してそれらを JFrame に追加します。最後に、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);
  }
}

出力:

Java setFont

setFont() および getFont().deriveFont() を使用して既存のフォントにスタイルを設定する

前の例では、setFont() を使用して新しいフォントを設定する方法を説明しましたが、このメソッドを使用して、JFrame コンポーネントの既存のフォントに新しいスタイルを設定することもできます。

これを実現するには、最初に component.getFont() を使用してコンポーネントのフォントを取得し、適用するスタイルを受け入れる deriveFont() 関数を呼び出します。Font.ITALIC を渡して、JLabel イタリックのフォントを作成します。

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

出力:

Java setFont

setFont() および Font.createFont() を使用してカスタムフォントを設定する

この例では、クラスですでにフォントを設定している最初のプログラムとは異なり、カスタムフォントを設定します。

カスタムフォントを取得するには、それをダウンロードして、プロジェクトディレクトリのルートに保存します。この例では、oswald.ttf フォントファイルを使用します。

JLabel を作成して初期化し、BufferedInputStream と呼ばれるフォントファイルを取得し、フォントファイルのパスを引数として取る FileInputStream のオブジェクトを渡します。これで、InputStream のオブジェクトを取得します。

新しいフォントを作成するには、Font クラスから createFont() を呼び出し、フォントリソースタイプを最初の引数として渡し、InputStream を 2 番目の引数として渡します。deriveFont() メソッドを使用して、カスタムフォントを JLabel コンポーネントに設定します。

その後、コンポーネントを JFrame に追加します。出力にはカスタムフォントが表示されます。

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

出力:

Java setFont

著者: 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