ラジオボタンが選択か非選択かを取得する

ラジオボタンはクリックされるごとに選択と非選択を切り替えます。ここでは個別のラジオボタンが現在選択か非選択かを取得する方法、およびグループにまとめられているラジオボタンの中で現在選択されているラジオボタンを取得する方法について解説します。

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

個別のラジオボタンが選択か非選択かを取得する

ラジオボタン毎に選択か非選択かを取得するには JRadioButton クラスの親クラスである AbstractButton クラスで用意されている isSelected メソッドを使います。

public boolean isSelected()

ボタンの状態を返します。 トグル・ボタンが選択されている場合はtrue、そうでない場合はfalseを返します。

戻り値:
トグル・ボタンが選択されている場合はtrue、そうでない場合はfalse

メソッドを実行すると、対象のラジオボタンが選択の場合には true 、非選択の場合には false が返されます。

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

JRadioButton radio = new JRadioButton("Apple");
boolean status = radio.isSelected();

サンプルプログラム

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

import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class JSample15_1 extends JFrame implements ActionListener{

  JRadioButton[] radio;

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

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

    radio = new JRadioButton[3];

    radio[0] = new JRadioButton("Peach");
    radio[1] = new JRadioButton("Orange");
    radio[2] = new JRadioButton("Banana");

    ButtonGroup bgroup = new ButtonGroup();
    bgroup.add(radio[0]);
    bgroup.add(radio[1]);
    bgroup.add(radio[2]);

    JPanel p = new JPanel();
    p.add(radio[0]);
    p.add(radio[1]);
    p.add(radio[2]);

    JButton button = new JButton("Check");
    button.addActionListener(this);

    JPanel button_panel = new JPanel();
    button_panel.add(button);

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

  public void actionPerformed(ActionEvent e){
    StringBuilder sb = new StringBuilder();

    for (int i = 0 ; i < radio.length; i++){
      sb.append(radio[i].getText());

      if (radio[i].isSelected()){
        sb.append("[Select]");
      }else{
        sb.append("[Not Select]");
      }

      sb.append(" ");
    }

    JOptionPane.showMessageDialog(this, new String(sb));
  }
}

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

javac JSample15_1.java

個別のラジオボタンが選択か非選択かを取得する(1)

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

java JSample15_1

ラジオボタンを 3 つ、ボタンを 1 つ追加しました。

個別のラジオボタンが選択か非選択かを取得する(2)

いずれかのラジオボタンをクリックして選択してから画面下のボタンをクリックしてください。

個別のラジオボタンが選択か非選択かを取得する(3)

すべてのチェックボックスが選択か非選択かを取得してダイアログに表示します。

個別のラジオボタンが選択か非選択かを取得する(4)

グループの中で選択されているラジオボタンを取得する

ラジオボタンは単独で選択と非選択を行うのではなく、複数のラジオボタンをグループでまとめて、グループの中のいずれか一つのラジオボタンが選択されている形で利用されるケースが多いと思います。

ラジオボタンをグループにまとめている場合、グループの中で現在選択されているラジオボタンを取得するには ButtonGroup クラスで用意されている getSelection メソッドを使います。

public ButtonModel getSelection()

選択されたボタンのモデルを返します。

戻り値:
選択されたボタンのモデル

メソッドを実行するとグループの中で現在選択されているラジオボタンの ButtonModel インターフェースを実装したクラスのオブジェクトを返します。

このオブジェクトからは ButtonModel インターフェースで定義されている getActionCommand メソッドを使うことで、ラジオボタンがクリックされた時に設定されているアクションコマンドを取得することができます。

String getActionCommand()

ボタンのアクション・コマンド文字列を返します。

戻り値:
生成したイベントを識別するString

取得したアクションコマンドから選択されているラジオボタンを判別します。

具体的な使い方については次のサンプルをみてください。

サンプルプログラム

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

import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.ButtonGroup;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class JSample15_2 extends JFrame implements ActionListener{

  ButtonGroup bgroup;
  JLabel label;

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

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

    JRadioButton radio1 = new JRadioButton("Peach");
    radio1.addActionListener(this);
    radio1.setActionCommand("Peach");
    JRadioButton radio2 = new JRadioButton("Orange");
    radio2.addActionListener(this);
    radio2.setActionCommand("Orange");
    JRadioButton radio3 = new JRadioButton("Banana");
    radio3.addActionListener(this);
    radio3.setActionCommand("Banana");

    bgroup = new ButtonGroup();
    bgroup.add(radio1);
    bgroup.add(radio2);
    bgroup.add(radio3);

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

    label = new JLabel();

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

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

  public void actionPerformed(ActionEvent e){
    String str = bgroup.getSelection().getActionCommand();
    label.setText(str + " selected");
  }
}

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

javac JSample15_2.java

グループの中で選択されているラジオボタンを取得する(1)

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

java JSample15_2

ラジオボタンを 3 つ、そして何も表示されていませんがラベルを 1 つ追加しました。

グループの中で選択されているラジオボタンを取得する(2)

いずれかのラジオボタンをクリックしてラベルを選択すると、選択したラベルの文字列が画面下部のラベルに表示されます。

グループの中で選択されているラジオボタンを取得する(3)

グループの中で選択されているラジオボタンを取得する(4)

-- --

個別のラジオボタンが現在選択か非選択かを取得する方法、およびグループにまとめられているラジオボタンの中で現在選択されているラジオボタンを取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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