ラジオボタンの作成と表示文字列の設定

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

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

JRadioButtonクラスの定義

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

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

public class JRadioButton
extends JToggleButton
implements Accessible

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

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

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

JRadioButton()

初期状態では選択解除されているラジオ・ボタンを、テキストの指定なしで作成します。

JRadioButton(String text)

選択解除状態のラジオ・ボタンを、テキストの指定ありで作成します。

JRadioButton(String text, boolean selected)

ラジオ・ボタンを、選択状態とテキストの指定ありで作成します。

JRadioButton(String text, Icon icon)

初期状態では選択解除のラジオ・ボタンを、テキストとイメージの指定ありで作成します。

JRadioButton(String text, Icon icon, boolean selected)

ラジオ・ボタンを、テキスト、イメージ、および選択状態の指定ありで作成します。

JRadioButton(Action a)

指定されたActionからプロパティを取得するラジオ・ボタンを作成します。

JRadioButton(Icon icon)

初期状態では選択解除されているラジオ・ボタンを、イメージの指定あり、テキストの指定なしで作成します。

JRadioButton(Icon icon, boolean selected)

ラジオ・ボタンを、選択状態とイメージの指定あり、テキストの指定なしで作成します。

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

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

public JRadioButton(String text)

選択解除状態のラジオ・ボタンを、テキストの指定ありで作成します。

パラメータ:
text - ラジオ・ボタンに表示する文字列

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

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

public JRadioButton()

初期状態では選択解除されているラジオ・ボタンを、テキストの指定なしで作成します。

文字や画像がデフォルトでは何も表示されないラジオボタンを作成します。

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

JRadioButton radio1 = new JRadioButton();
JRadioButton radio2 = new JRadioButton("Apple");

サンプルプログラム

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

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

    JRadioButton radio1 = new JRadioButton("Apple");
    JRadioButton radio2 = new JRadioButton();

    JPanel p = new JPanel();
    p.add(radio1);
    p.add(radio2);

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

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

javac JSample1_1.java

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

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

java JSample1_1

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

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

ラジオボタンはクリックすることで選択と非選択を切り替えることができます。

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

ラジオボタンに表示される文字列を設定する

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

public void setText(String text)

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

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

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

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

JRadioButton radio1 = new JRadioButton();
radio1.setText("Apple");

JRadioButton radio2 = new JRadioButton("Orange");
radio2.setText("Peach");

サンプルプログラム

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

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

    JRadioButton radio1 = new JRadioButton("Apple");
    JRadioButton radio2 = new JRadioButton();
    radio2.setText("Orange");

    JPanel p = new JPanel();
    p.add(radio1);
    p.add(radio2);

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

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

javac JSample1_2.java

ラジオボタンに表示される文字列を設定する(1)

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

java JSample1_2

ラジオボタンが 2 つ追加されました。 2 つ目のラジオボタンはあとからラジオボタンに表示される文字列を設定しています。

ラジオボタンに表示される文字列を設定する(2)

ラジオボタンは明示的にサイズを指定していない場合、ラジオボタンに表示される文字列の長さに合わせて自動的にサイズを変更します。

ラジオボタンは別々に選択されているかどうかを設定するためではなく、グループでまとめたラジオボタンの中でどれか一つを選択するために使用されます。次のページにて複数のラジオボタンをグループ化する方法を解説します。

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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