2017-11-02 12 views
0

私は、ユーザーがサインアップしなければならないプログラムを、持っていると彼はラジオボタンと性別を選ぶサインアップシーンで: Screenshot of the program runningJavaFXでRadioButtonを押すと変数を変更する方法は?

私がcharである変数「性別」を持っています。 RadioButtonユーザーが何を押すか(男性は 'm'、女性は 'f')に応じて、プログラムがこの文字を 'm'または 'f'のいずれかに変更します。 これは私が今のところ持っているものですが、それは動作しません:あなたの時間と労力のため

  @FXML 
      private RadioButton male; 
      @FXML 
      private RadioButton female; 
      private char gender; 


      male.setOnAction(new EventHandler<ActionEvent>() { 
       @Override 
       public void handle(ActionEvent event) { 
        gender = 'm'; 
       } 
      }); 
      female.setOnAction(new EventHandler<ActionEvent>() { 
       @Override 
       public void handle(ActionEvent event) { 
        gender = 'f'; 
       } 
      }); 

ありがとう!

+0

何をして動作しませんか?どこがうまくいかない?エラーはありますか? – Steven

+0

@Stevenジェンダーは、押されたRadioButtonに関係なく、nullとして返します。 –

答えて

0

RadioButtonクラスに関連付けられた​​メソッドを試すことができます。例えば

、同様

if(male.isSelected()){ 
    gender = 'm'; 
} 

、あなたは適切な初期化後に他のラジオボタンのためにそれを使用することができます。

+0

ありがとう!あなたは伝説です! –

+0

@DmytroMarychいつでもようこそ。 :) –

0

ラジオボタンは、ToggleGroupに配置する必要があります。

トグルグループがない場合、ラジオボタンの選択は相互に排他的ではないため、性別は男性と女性の両方に同時に設定できます。

次に、選択したトグルの変更をリスンして、それに対処することができます。これは、グループ内の各トグルにリスナーを追加することにより、いずれかで行うことができます。

male.selectedProperty.addListener((observable, wasSelected, isSelected) -> { 
    if (isSelected) { 
     gender = 'm'; 
    } 
}; 
// similarly for female... 

またはグループのselectedTogglePropertyへの変更を聞くことによって:

ToggleGroup genderGroup = new ToggleGroup(); 
male.setToggleGroup(genderGroup); 
female.setToggleGroup(genderGroup); 
genderGroup.selectedToggleProperty().addListener(
    (observable, oldToggle, newToggle) -> { 
     if (newToggle == male) { 
      gender = 'm'; 
     } else if (newToggle == female) { 
      gender = 'f'; 
     } else { 
      gender = '?'; 
     } 
    } 
); 
関連する問題