2017-01-13 3 views
0

3つのラジオボタン(comm、med、all)でメニューを作成したいと思います。たとえば、通信ボタンはhboxを作成する必要がありますが、他のオプションが選択されている場合、このhboxは消滅するはずですが、それはありません。未選択時にhboxを削除する

私は正しい方向に誰かを設定できますか? ありがとうございます。

は、相続人アイブ氏が得たもの:アクションはそのボタン上で実行されたときに

comm.setOnAction(new EventHandler<ActionEvent>() { 
         @Override public void handle(ActionEvent e) { 
          if(comm.isSelected()) 
           root.add(commBox, 0,1); 
          else if(med.isSelected()||all.isSelected()) 
           root.getChildren().remove(commBox); 
         } 
        }); 
+0

:あなたはトグル・グループとのリスナを登録することができ、また

comm.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> { if (isNowSelected) { root.add(commBox, 0,1); } else { root.getChildren().remove(commBox); } }); 

代わりselectedPropertyでリスナーを登録しますそれとも完全に取り除くのか?それが第2の選択肢なら、あなたはなぜそれをしたいのですか? –

答えて

2

ラジオボタンのonActionハンドラが呼び出されます。ラジオボタンは、同じトグルグループ内の他のボタンの1つが選択されると選択解除されます。したがって、ボタンが選択解除されてもハンドラは呼び出されません。あなたはそれを別の時刻を表示できるようにするには、それを非表示にする

// assuming the following existing code, or its equivalent: 
ToggleGroup toggleGroup = new ToggleGroup(); 
comm.setToggleGroup(toggleGroup); 
med.setToggleGroup(toggleGroup); 
all.setToggleGroup(toggleGroup); 

// then this will work: 
toggleGroup.selectedToggleProperty().addListener((obs, oldToggle, newToggle) -> { 
    if (newToggle == comm) { 
     root.add(commBox, 0, 1); 
    } else { 
     root.getChildren().remove(commBox); 
    } 
    // maybe more logic here to handle med or all selected... 
}); 
関連する問題