これを行わずに、ボタングループで選択されているラジオボタンを取得するにはどうすればよいですか。
if (jRadioButton1.isSelected()) {
//...
}
if (jRadioButton2.isSelected()) {
//...
}
if (jRadioButton3.isSelected()) {
//...
}
if (jRadioButton4.isSelected()) {
//...
}
これを行わずに、ボタングループで選択されているラジオボタンを取得するにはどうすればよいですか。
if (jRadioButton1.isSelected()) {
//...
}
if (jRadioButton2.isSelected()) {
//...
}
if (jRadioButton3.isSelected()) {
//...
}
if (jRadioButton4.isSelected()) {
//...
}
ButtonGroupのgetSelection()メソッドを使用して、選択したボタンのButtonModelを取得できます。たとえば、ButtonModelから実行するアクションへの何らかの補助的なデータ構造マッピングがない限り、選択したボタンで条件付きで分岐することを回避する方法はわかりません。それがあれば、返されたButtonModelに基づいてアクションを実行できます。
DarrylのSelectButtonGroupには、getSelectedButton()メソッドがあります。
私は質問がずっと前に投稿されたことを知っています。とにかく、setActioncommand関数を使用できます。ラジオボタンの作成中に、setActionCommandを呼び出して、選択されたラジオボタンを参照するために使用できるアクションコマンド値を設定できます。
jRadioButton1.setActionCommand("jRadioButton1");
jRadioButton2.setActionCommand("jRadioButton2")
.
.
String button_name = ((JToggleButton.ToggleButtonModel)button_group.getSelection()).getActionCommand();
ButtonGroupクラスは、意図した場合に、グループ内で現在選択されているボタン(AbstractButtonから継承されたもの)を識別するメソッドを提供しません。グループ内のすべてのボタンの選択された状態をクリアするclearSelection()メソッドのみがあります(ボタンの状態を選択/選択解除しないJButtonおよびJMenuItemを除く)。
私が考えることができる1つの解決策は、特別な変数またはフィールド(AbstractButton、JRadioButton、またはメニュー項目にある場合はJRadioButtonMenuItem)を使用して、各AbstractButtonのアクションリスナーメソッド内で更新することにより、現在選択されているものを識別することです(ユーザーを検証するようにしてください)複数回トリガーされる可能性があるため、クリックします!)。他のメソッドで変数を使用します(型キャストによって-AbstractButtonの場合のみ)。
それ以外は、いや...条件分岐を行う必要があります。
ボタングループbgを処理する場合は、ボタングループのgetElements()メソッドを呼び出してボタンを取得し、それをCollections.list()メソッドのパラメーターとして使用して、結果を配列リストに保存するだけです。そこから、正しいボタンを取得するのは比較的簡単です。
ArrayList<AbstractButton> arl = Collections.list(bg.getElements());
for (AbstractButton ab : arl) {
JRadioButton jrb = (JRadioButton) ab;
if (jrb.isSelected()) {
return jrb;
}
}