Java での setFont の使用
-
setFont()
を使用して JFrame に新しいフォントを設定する -
setFont()
およびgetFont().deriveFont()
を使用して既存のフォントにスタイルを設定する -
setFont()
およびFont.createFont()
を使用してカスタムフォントを設定する
この記事では、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);
}
}
出力:
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);
}
}
出力:
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);
}
}
出力:
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 での SwingUtilities.invokeLater() の使用
- Java ペイント コンポーネント
- Java Swing を使用して Canvas を作成する
- Java クリアテキストフィールド
- Java Swing で JLabel テキストを変更する
- Java Swing 日付