2017-01-13 28 views
0

我想用3個單選按鈕(comm,med,all)創建菜單。例如Comm按鈕應該創建hbox,但是當選擇其他選項時,這個hbox應該消失,但它不會。未選中時刪除hbox

任何人都可以設置我正確的方向嗎? 非常感謝。

繼承人什麼Ive得到:

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

你想隱藏它能夠顯示它的另一個時間或只是完全刪除它?如果這是第二種選擇,爲什麼你想這樣做? –

回答

2

onAction處理程序單選按鈕,當該按鈕執行操作時被調用。當選中同一切換組中的其中一個其他按鈕時,單選按鈕將被取消選擇。因此,當按鈕被取消選擇時,您的處理程序不會被調用。

註冊與selectedProperty而不是聽衆:

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

或者,你可以註冊與切換組監聽器:

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