2017-01-13 2 views
0

Ich möchte Menü mit 3 Radiobuttons (comm, med, all) erstellen. Wo zum Beispiel Comm-Button sollte hbox erstellen, aber wenn die andere Option ausgewählt ist, sollte diese hbox verschwinden, aber es wird nicht.Entfernen Sie hbox, wenn nicht ausgewählt

Könnte jemand mich in die richtige Richtung setzen? Vielen Dank.

Heres, was Ive erhielt:

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

Sie wollen, es verstecken sie in der Lage sein eine andere Zeit anzuzeigen oder einfach nur komplett entfernen? Wenn es die zweite Option ist, warum sollten Sie das tun? –

Antwort

2

Der onAction Handler für das Optionsfeld aufgerufen wird, wenn eine Aktion auf , die Taste durchgeführt wird. Die Optionsschaltfläche wird deaktiviert, wenn eine der anderen Schaltflächen in derselben Umschaltgruppe ausgewählt wird. Daher wird Ihr Handler nicht aufgerufen, wenn die Schaltfläche deaktiviert ist.

Registrieren Sie ein Zuhörer mit dem selectedProperty statt:

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

Alternativ Sie einen Listener mit der Toggle-Gruppe registrieren konnte:

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