チェックボックスの作成と表示文字列の設定

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

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

JCheckBoxクラスの定義

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

java.lang.Object
  java.awt.Component
    java.awt.Container
      javax.swing.JComponent
        javax.swing.AbstractButton
          javax.swing.JToggleButton
            javax.swing.JCheckBox

public class JCheckBox
extends JToggleButton
implements Accessible

チェックボックスはコンポーネントの親クラスである JComponent クラスのサブクラスとなっています。またボタン系を扱うクラス全般の親クラスである AbstractButton クラスのサブクラスでもあります。さらに選択/非選択のどちらかの状態を持つ JToggleButton クラスのサブクラスでもあります。

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

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

JCheckBox()

初期状態で選択されていない、テキストおよびアイコンなしのチェックボックス・ボタンを生成します。

JCheckBox(String text)

初期状態で選択されていない、テキスト付きのチェックボックスを生成します。

JCheckBox(String text, boolean selected)

テキスト付きのチェックボックスを生成し、それが初期状態で選択されるかどうかを指定します。

JCheckBox(String text, Icon icon)

初期状態で選択されていない、指定されたテキストおよびアイコン付きのチェックボックスを生成します。

JCheckBox(String text, Icon icon, boolean selected)

テキストおよびアイコン付きのチェックボックスを生成し、それが初期状態で選択されるかどうかを指定します。

JCheckBox(Action a)

指定されたActionからプロパティを取得するチェックボックスを生成します。

JCheckBox(Icon icon)

初期状態で選択されていない、アイコン付きのチェックボックスを生成します。

JCheckBox(Icon icon, boolean selected)

アイコン付きのチェックボックスを生成し、それが初期状態で選択されるかどうかを指定します。

チェックボックスには文字列や画像を表示することができ、コンストラクも何を表示するのかに合わせていくつか用意されています。また初期状態として選択されているかどうかを指定できるコンストラクタも用意されています。

最初に表示する文字列を指定してチェックボックスを作成するコンストラクタを見てみます。次のように定義されています。

public JCheckBox(String text)

初期状態で選択されていない、テキスト付きのチェックボックスを生成します。

パラメータ:
text - チェックボックスのテキスト。

引数にはチェックボックスに表示されるテキストを表す String クラスのオブジェクトを指定します。

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

public JCheckBox()

初期状態で選択されていない、テキストおよびアイコンなしのチェックボックス・ボタンを生成します。

文字や画像がデフォルトでは何も表示されないチェックボックスを作成します。

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

JCheckBox check1 = new JCheckBox();
JCheckBox check2 = new JCheckBox("Travel");

サンプルプログラム

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

import javax.swing.JFrame;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
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);

    JCheckBox check1 = new JCheckBox("Travel");
    JCheckBox check2 = new JCheckBox();

    JPanel p = new JPanel();
    p.add(check1);
    p.add(check2);

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

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

javac JSample1_1.java

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

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

java JSample1_1

チェックボックスを 2 つ追加しました。 1 つ目のチェックボックスにはコンストラクタでチェックボックスに表示される文字列を指定してあります。

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

チェックボックスはクリックすることで選択と非選択を切り替えることができます。

JCheckBoxクラスのコンストラクタ(3)

チェックボックスに表示される文字列を設定する

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

public void setText(String text)

ボタンのテキストを設定します。

パラメータ:
text - テキストの設定に使用する文字列

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

実際の使い方は次のようになります。文字列が設定されていないチェックボックスに文字列を設定したり、既に文字列が設定されているチェックボックスの文字列を変更したりすることができます。

JCheckBox check1 = new JCheckBox();
check1.setText("Travel");

JCheckBox check2 = new JCheckBox("Travel");
check2.setText("Movie");

サンプルプログラム

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

import javax.swing.JFrame;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
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);

    JCheckBox check1 = new JCheckBox("Travel");
    JCheckBox check2 = new JCheckBox();
    check2.setText("Chinese cuisine");

    JPanel p = new JPanel();
    p.add(check1);
    p.add(check2);

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

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

javac JSample1_2.java

チェックボックスに表示される文字列を設定する(1)

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

java JSample1_2

チェックボックスが 2 つ追加されました。 2 つ目のチェックボックスはあとからチェックボックスに表示される文字列を設定しています。

チェックボックスに表示される文字列を設定する(2)

チェックボックスは明示的にサイズを指定していない場合、チェックボックスに表示される文字列の長さに合わせて自動的にサイズを変更します。

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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