プロが教えるわが家の防犯対策術!

こんばんわ。

ラジオボタンを使って判定を行いたいのですがうまくいきません。

やりたいのは、1,2,3のラジオボタンとaというボタンがありaを押したときにチェックがついているラジオボタンによって判定が変わるようにしたいのです。

初期設定を1はtrue、2,3はfalseにしてあります。
3つのボタンはグループ化してありますので、どれかひとつしかtrueがないです。

現状では、初期設定の状態でボタンを押しても反応しません。
一度ボタンのt/fを変更すれば判定ができるようになるのですが。

どなたかわかる方いらっしゃいましたら教えてください。
お願いします。

A 回答 (3件)

aというボタンを押した時に


チェックされているラジオボタンの判定をしたい。
ってだけなら
itemStateChangedを実装する必要

ラジオボタンと変数(フラグ)を併せ持つ必要
もいらないでしょ。
(ラジオボタンとフラグの二重管理でフラグセットし忘れなどバグの原因にもなりますし。)

aというボタンが押されたときの処理で
--------------------------------------------------
Checkbox c1 = new Checkbox("1");
Checkbox c2 = new Checkbox("2");
Checkbox c3= new Checkbox("3");

public void actionPerformed(ActionEvent ae){
  String command = ae.getActionCommand();
  if(command.equals("aボタンのアクションコマンド")){
    if(c1.getState()){
      //c1の処理
    }else if(c2.getState()){
      //c2の処理
    }else if(c3.getState()){
      //c3処理
    }else{
      //チェックされていない場合の処理
      //初期設定されてるからあり得ない
    }
  }
}
--------------------------------------------------
でいいんじゃないかな。

他にも
CheckboxGroupクラスに
public Checkbox getSelectedCheckbox()
戻り値 現在「オン」の状態であるチェックボックス、またはnull(全てのチェックボックスが「オフ」
なんてのもあるので、上記の分岐部分を

--------------------------------------------------
CheckboxGroup cg = new CheckboxGroup();

Checkbox cb = cg.getSelectedCheckbo();
if(cb == null){
  //全部オフ
}else if(cb == c1){
  //c1の処理
}else if(cb == c2){
  //c2の処理
}else if(cb == c3){
  //c3の処理
}else{
  //上記以外(ありえない)
}
--------------------------------------------------
としてもいいかと。

…あ゛…
JCheckboxだったらごめんなさい。orz

この回答への補足

回答ありがとうございます。

CheckboxではなくJRadioButtonを使っています。
違いがあるのかないのかは分かりませんが、一応・・・。

記載していただいた方法でやってみました。
ですが、やはりボタンを押した際に判定ができませんでした。

補足日時:2005/06/16 10:21
    • good
    • 0

まずは


ラジオボタンが2,3個
実行ボタンが1個
の簡単なものを作ってから

実際のソース(Test.java)
に乗せた方がいいですよ。

あと、前に誰かが仰ってたんですけど…
java.awt

java.swing
は一緒に使わないほうがいいみたいなこと言ってました。
理由は忘れましたし、今回の件に当てはまるかわからないですけど。

JRadioButtonじゃなくてButtonGroupクラスの方に選択されたボタンなどを返すメソッドがあるぽいですね。
#APIを斜め読みしただけですけど。:P
    • good
    • 0
この回答へのお礼

時間がありましたので、自分でやっていたところ判定ができました。

String1個用意し、初期値に3個のうちどれか入力しActionListenerで変わったらStringの値を変更させていきました。

>java.awt
>と
>java.swing
>は一緒に使わないほうがいいみたいなこと言ってました。
確かに、途中でエラーが出てきました。
そのときListが使えなくなりました。
ListやJRadioButtonを使わなければならない理由はないのですが、一度それを使用した以上最後まで使いたいと思っていたので無理矢理使えるようにしましたw

>JRadioButtonじゃなくてButtonGroupクラスの方に選択されたボタンなどを返すメソッドがあるぽいですね。
私もここでお聞きする前にプラットフォームで探してみたりしていたのですが、わからなかったので。

回答ありがとうございました。

お礼日時:2005/06/17 19:07

どんな風にプログラムをしているか不明なので、


推測ですが、状況から
public void itemStateChanged(ItemEvent e){
if(cb1.getState()==true) select=1;
if(cb2.getState()==true) select=2;
if(cb3.getState()==true) select=3;
//repaint();
}
みたいな感じで、どのラジオボタンが選ばれたのかというのを変数に保存しているのではないかと思いますが、
public void init(){
cbGp = new CheckboxGroup();
cb1 = new Checkbox("1", true, cbGp);
cb1.addItemListener(this);
add(cb1);
select=1;//ラジオボタンをtrueにして変数にもセット
cb2 = new Checkbox("2", false, cbGp);
cb2.addItemListener(this);
add(cb2);
cb3 = new Checkbox("3", false, cbGp);
cb3.addItemListener(this);
add(cb3);
btn = new Button("a");
btn.addActionListener(this);
add(btn);
}
みたいな感じで、
init()の初期化で変数(フラグ)の設定を併せてやっていないのではないですか?

この回答への補足

回答ありがとうございます。
getState()を同じようにしてみたのですが、「未定義です」と表示されてしまいました。
なお、CheckboxではなくJRadioButtonを使っております。

補足日時:2005/06/17 16:32
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています