ラジオボタン JRadioButton

ここでは GUI の基本コンポーネントであるラジオボタンの使い方を説明します。

ラジオボタンというのは一般的に、選択肢が複数ある時に、ひとつを選択すると他の選択肢が非選択状態になるようなユーザーインターフェイスを指します。 例えば自動車のカーステレオについている実際のラジオでは、聴きたい放送局をひとつだけ選ぶことができますよね。 そうしたところからこの名前がついています。

Swing の GUI コンポーネントとしては、JRadioButton という名前でラジオボタンが使えます。

さっそく JRadioButton を使ってみましょう。ここで作るサンプルコードは次のようになります。

ロサンゼルス (Los Angeles) かホノルル (Honolulu) か、という選択肢があって、どちらか一つが選べます。

初期状態では Los Angeles が選択された状態になっていて、選択を切り替える度にコンソールにどちらを選んだのか、その都度表示します。

JRadioButton の使い方

JRadioButton は、グループ化して使います。 どれかを選択したら「その他」を非選択にする必要があるので、複数の選択肢をまとめ上げる必要があるからです。

グループ化するには、ButtonGroup というオブジェクトを使います。

同じ ButtonGroup に追加されているラジオボタン同士はグループ化され、どれかが選択されると残りは非選択状態になります。

アクションリスナーでどのラジオボタンが選択されたのか識別するために、ここではラジオボタンに名前を設定しています。 ラジオボタンの setName メソッドで名前を設定し、getName メソッドで名前を取得できます。

package com.keicode.java.testapp;

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JRadioButton;

@SuppressWarnings("serial")
public class JRadioButtonTest extends JFrame {

	public JRadioButtonTest() {
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new FlowLayout());
		setSize(300, 100);

		ButtonGroup vacationGroup = new ButtonGroup();

		JRadioButton rad1 = new JRadioButton("Los Angeles", true);
		JRadioButton rad2 = new JRadioButton("Honolulu");

		rad1.addActionListener(new CheckActionListener());
		rad1.setName("LA");
		vacationGroup.add(rad1);

		rad2.addActionListener(new CheckActionListener());		
		rad2.setName("Honolulu");
		vacationGroup.add(rad2);

		add(rad1);
		add(rad2);
	}
	
	class CheckActionListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			JRadioButton s = (JRadioButton) e.getSource();			
			System.out.println("Selected: " + s.isSelected());
			System.out.println("Name: "+ s.getName());
		}
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				JRadioButtonTest app = new JRadioButtonTest();
				app.setVisible(true);
			}
		});
	}
}

上記のコードで、上のスクリーンショットのようなプログラムが出来上がります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Java 入門