2.5 ラジオボタン(JRadioButton)とボタングループ(ButtonGroup)の使い方
本節では、ラジオボタン(JRadioButton)の使い方と、ボタングループ(ButtonGroup)の使い方を見ていきます。
ラジオボタンはチェックボックスによく似ていますが、大抵は複数のラジオボタンが1セットになっており、複数の内1つしか選択状態にならない(排他的)、という性質を持っています。チェックボックスと使い分けることで、素敵なソフトウェアになっていきます。きっと。
1.ラジオボタンの設置
まずはラジオボタンを設置しましょう。前回作成したプロジェクト及びJFrameフォームを想定して説明していきます。
「パレット」ウィンドウの「Swingコントロール」タブから「ラジオボタン」をクリックし、「JFrame」フォームの上でもう一度クリックして配置します。ここでは前回配置したチェックボックスの下に配置しています。
ラジオボタンを右クリックして、[テキストを編集]を選択します。
「更に1クリック追加」というテキストにしました。これからどんな機能を持たせるか、バレたかもしれません。
ラジオボタンを右クリックして、[変数名を変更]を選択します。
「radioMore1Click」という名前にしました。更に1クリック(More1Click)する機能を持ったラジオボタン(radio)という意味になります。
今回は、このラジオボタンを予め選択された状態にしてみましょう。ラジオボタンを右クリックして、[プロパティ]を選択し、[selected]と書かれた項目にチェックを入れます。これだけです。
ラジオボタン1つだけではあまり意味が無いので、「更に2クリック追加」というテキストのラジオボタンを追加しましょう。こちらは、プロパティの[selected]にはチェックを入れないようにします。また、今後以前に追加したこのとあるGUI部品を追加する際は、上図のようにGUI部品の名前と変数名だけ記載していくことにします。
2.ボタングループの利用
2つのラジオボタンが追加されましたが、これだけではチェックボックスが2個あるのと何も変わりません。そこで利用するのがボタングループ(ButtonGroup)です。ボタングループを利用することで、複数のラジオボタン(チェックボックスも可)を紐付けることができ、紐付けられたラジオボタンはボタングループ内で1つしか選択状態になりません。それではボタングループを使ってみましょう。
「パレット」ウィンドウの「Swingコントロール」タブから「ボタングループ」をクリックし、GUIデザイナ上の好きな場所でクリックして追加します。ボタングループは目に見えるGUI部品ではないため、GUIデザイナ上で確認することはできません。
画面左下のナビゲータウィンドウを見てみましょう。「buttonGroup1」という名前のコンポーネントが追加されているはずです。「buttonGroup1」を右クリックし、[変数名を変更]を選択します。
「buttonGroupClick」という名前にしました。クリック(Click)の機能に関するボタングループ(buttonGroup)という意味です。
次に、2つのラジオボタンをボタングループに紐付けます。[Shift]キーを押しながら、2つのラジオボタンを同時に選択します(1つずつ行っても構いません)。右クリックしてプロパティを表示するか、画面右下のプロパティウィンドウにて、[buttonGroup]の項目を先ほど作成した[buttonGroupClick]に変更します。これで、2つのラジオボタンが[buttonGroupClick]に紐付けられました。
実行してみましょう。はじめは、「更に1クリック追加」と書かれたラジオボタンが選択されているはずです。
「更に2クリック追加」と書かれたラジオボタンを選択した際、「更に1クリック追加」と書かれたラジオボタンの選択が解除されていれば成功です。
3.機能の実装
それでは、機能を実装していきましょう。「押してみて!」と書かれたボタンをダブルクリックするか、[ソース]タブを押して、ソース編集画面に移動します。
ラジオボタンは基本的にチェックボックスと同じで、次のように「isSelected()」メソッドを使ってボタンの選択状態を判定することができます。
1 2 3 4 5 6 7 |
if ([ラジオボタン名A].isSelected()) { //ラジオボタンAが選択されているとき、ここが実行される } else if ([ラジオボタンB].isSelected()) { //ラジオボタンBが選択されているとき、ここが実行される } else { //どちらでもないとき、ここが実行される } |
実際には、前節で作成したチェックボックスの判定を行った部分の下に、次のようなソースを挿入します。
1 2 3 4 5 6 |
//ラジオボタンの判定 if (radioMore1Click.isSelected()) { count += 1; } else if (radioMore2Click.isSelected()) { count += 2; } |
「radioMore1Click」が選択されていたらcountに1を加算し、「radioMore2Click」が選択されていたらcountに2を追加する命令です。
実行してみましょう。チェックボックスとラジオボタンが選択されているとき、最大3ずつカウントが増えていくはずです。
(2013年11月13日 加納徹)