2016-12-19 7 views
2

JavaFX CheckComboBox Как проверить и снять отметку со всех элементов при проверке или снятии некоторых предметов.Как проверить и снять отметку со всех элементов при проверке или снятии некоторых предметов

Check all when ckeck item All

Uncheck all when unckeck item All

ObservableList<String> list = FXCollections.observableArrayList("All","Item 1", "Item 2", "Item 3", "Item 4"); 

checkBoxCombo.getItems().addAll(list); 

checkBoxCombo.getCheckModel().getCheckedItems().addListener(new ListChangeListener<String>() {  

public void onChanged(ListChangeListener.Change<? extends String> c) { 

      if(checkBoxCombo.getCheckModel().isChecked(0))     
        checkBoxCombo.getCheckModel().checkAll();     
      } 
     }); 
+1

Этот вопрос имеет запутанную формулировку. Просьба привести пример того, что у вас есть, и то, что вы пробовали. – Sonny

ответ

3

Добавить boolean поле для слушателя, чтобы предотвратить рекурсии:

checkBoxCombo.getCheckModel().getCheckedItems().addListener(new ListChangeListener<String>() { 

    private boolean changing = false; 

    @Override 
    public void onChanged(ListChangeListener.Change<? extends String> c) { 
     if (!changing && checkBoxCombo.getCheckModel().isChecked(0)) { 
      // trigger no more calls to checkAll when the selected items are modified by checkAll 
      changing = true; 
      checkBoxCombo.getCheckModel().checkAll(); 
      changing = false; 
     } 
    } 
}); 
+0

Вот что мне нужно, теперь я работаю. спасибо. – R3ing