2017-01-13 4 views
0

Je voudrais créer un menu avec 3 boutons radio (comm, med, all). Où, par exemple, le bouton Comm devrait créer hbox, mais quand l'autre option est sélectionnée, cette hbox devrait disparaître, mais elle ne le sera pas.Supprimer hbox si non sélectionné

Quelqu'un pourrait-il me mettre dans la bonne direction? Merci beaucoup.

Heres ce Ive a obtenu:

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

Vous voulez cacher pouvoir afficher une autre fois ou juste l'enlever complètement? Si c'est la deuxième option, pourquoi voudriez-vous faire cela? –

Répondre

2

Le gestionnaire onAction pour le bouton radio est invoquée lorsqu'une action est effectuée sur ce bouton . Le bouton radio sera désélectionné lorsque l'un des autres boutons dans le même groupe de bascules est sélectionné. Votre gestionnaire n'est donc pas appelé lorsque le bouton est désélectionné.

enregistrer un écouteur avec le selectedProperty à la place:

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

Sinon, vous pouvez enregistrer un écouteur avec le groupe bascule:

// 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... 
});