ラベルの作成とラベルに表示する文字列の設定

ラベルを作成するには JLabel クラスを使用します。ここでは JLabel クラスの定義やコンストラクトについて確認します。またラベルに表示される文字列をあとから設定する方法も解説します。

(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)

JLabelクラスの定義

JLabel クラスは次のように定義されています。

java.lang.Object
  java.awt.Component
    java.awt.Container
      javax.swing.JComponent
        javax.swing.JLabel

public class JLabel
extends JComponent
implements SwingConstants, Accessible

ラベルはコンポーネントの親クラスである JComponent クラスのサブクラスとなっています。

JLabelクラスのコンストラクタ

JLabel クラスをを利用するにはコンストラクタを使って JLabel クラスのオブジェクトを作成します。次のようなコンストラクタが用意されています。

JLabel()

JLabelのインスタンスを、イメージなしの空のタイトル文字列で作成します。

JLabel(String text)

JLabelのインスタンスを、指定されたテキストで作成します。

JLabel(String text, int horizontalAlignment)

JLabelのインスタンスを、指定されたテキストと水平方向の配置方法で作成します。

JLabel(String text, Icon icon, int horizontalAlignment)

指定されたテキスト、イメージ、および水平方向の配置方法で、JLabelのインスタンスを作成します。

JLabel(Icon image)

JLabelのインスタンスを、指定されたイメージで作成します。

JLabel(Icon image, int horizontalAlignment)

JLabelのインスタンスを、指定されたイメージと水平方向の配置方法で作成します。

ラベルには文字列や画像を表示することができ、コンストラクも何を表示するのかに合わせていくつか用意されています。最初に表示する文字列を指定してラベルを作成するコンストラクタを見てみます。次のように定義されています。

public JLabel(String text)

JLabelのインスタンスを、指定されたテキストで作成します。 ラベルは、表示領域のリーディング・エッジにそろえられ、垂直方向に中央揃えされます。

パラメータ:
text - ラベルに表示されるテキスト。

引数にはラベルに表示する文字列を表す String クラスのオブジェクトを指定します。ラベルの中でどの位置に文字列が表示されるのか(左揃えとか中央揃えとか)はデフォルトのままです。

次に文字列や画像をデフォルトでは表示せずに空のラベルを作成する場合には次のコンストラクタを使用します。

public JLabel()

JLabelのインスタンスを、イメージなしの空のタイトル文字列で作成します。 ラベルは、表示領域内で垂直方向に中央揃えされます。 ラベルの内容が設定されると、ラベルは表示領域のリーディング・エッジに表示されます。

文字や画像がデフォルトでは何も表示されない空のラベルを作成します。

実際の使い方は次のようになります。

JLabel label1 = new JLabel();
JLabel label2 = new JLabel("MyLabel");

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample1_1.java という名前で保存します。

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.BorderLayout;

class JSample1_1 extends JFrame{
  public static void main(String args[]){
    JSample1_1 frame = new JSample1_1("MyTitle");
    frame.setVisible(true);
  }

  JSample1_1(String title){
    setTitle(title);
    setBounds(100, 100, 600, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel label = new JLabel("Hello!");

    JPanel p = new JPanel();
    p.add(label);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.NORTH);
  }
}

次のようにコンパイルを行います。

javac JSample1_1.java

JLabelクラスのコンストラクタ(1)

コンパイルが終わりましたら実行します。

java JSample1_1

"Hello!" という文字列が表示されたラベルが表示されました。

JLabelクラスのコンストラクタ(2)

ラベルに表示される文字列を設定する

ラベルは作成したあとで別の文字列を設定することができます。ラベルに表示される文字列を設定するには JLabel クラスで用意されている setText メソッドを使います。

public void setText(String text)

このコンポーネントが表示する単一行のテキストを定義する。 このコンポーネントが表示する1行のテキストを定義します。 このプロパティのデフォルト値はnullです。

これはJavaBeansバウンド・プロパティです。

パラメータ:
text - このコンポーネントが表示するテキストの1行

引数にはラベルに表示される文字列を String クラスのオブジェクトを使って指定します。

実際の使い方は次のようになります。空のラベルに文字列を設定したり、既に文字列が設定されているラベルの文字列を変更したりすることができます。

JLabel label1 = new JLabel();
labe1.setText("MyLabel");

JLabel label2 = new JLabel("OldLabelText");
label2.setText("NewLabelText");

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample1_2.java という名前で保存します。

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.BorderLayout;

class JSample1_2 extends JFrame{
  public static void main(String args[]){
    JSample1_2 frame = new JSample1_2("MyTitle");
    frame.setVisible(true);
  }

  JSample1_2(String title){
    setTitle(title);
    setBounds(100, 100, 600, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel label1 = new JLabel();
    label1.setText("Hello!");

    JLabel label2 = new JLabel("bye!");
    label2.setText("Bye!");

    JPanel p = new JPanel();
    p.add(label1);
    p.add(label2);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }
}

次のようにコンパイルを行います。

javac JSample1_2.java

ラベルに表示される文字列を設定する(1)

コンパイルが終わりましたら実行します。

java JSample1_2

"Hello!" という文字列が表示されたラベル、"Bye!" という文字列が表示されたラベルがそれぞれ表示されました。それぞれ setText メソッドを使って表示される文字列を設定しています。

ラベルに表示される文字列を設定する(2)

-- --

JLabel クラスの定義やコンストラクトについて解説し、またラベルに表示される文字列をあとから設定する方法も解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。