2013-02-15 2 views

ответ

2

Мое решение было использовать пользовательский ButtonGroup:

/** 
* A ButtonGroup for check-boxes enforcing that at least one remains selected. 
* 
* When the group has exactly two buttons, deselecting the last selected one 
* automatically selects the other. 
* 
* When the group has more buttons, deselection of the last selected one is denied. 
*/ 
public class ButtonGroupAtLeastOne extends ButtonGroup { 

    private final Set<ButtonModel> selected = new HashSet<>(); 

    @Override 
    public void setSelected(ButtonModel model, boolean b) { 
     if (b && !this.selected.contains(model)) { 
      select(model, true); 
     } else if (!b && this.selected.contains(model)) { 
      if (this.buttons.size() == 2 && this.selected.size() == 1) { 
       select(model, false); 
       AbstractButton other = this.buttons.get(0).getModel() == model ? 
         this.buttons.get(1) : this.buttons.get(0); 
       select(other.getModel(), true); 
      } else if (this.selected.size() > 1) { 
       this.selected.remove(model); 
       model.setSelected(false); 
      } 
     } 
    } 

    private void select(ButtonModel model, boolean b) { 
     if (b) { 
      this.selected.add(model); 
     } else { 
      this.selected.remove(model); 
     } 
     model.setSelected(b); 
    } 

    @Override 
    public boolean isSelected(ButtonModel m) { 
     return this.selected.contains(m); 
    } 

    public void addAll(AbstractButton... buttons) { 
     for (AbstractButton button : buttons) { 
      add(button); 
     } 
    } 

    @Override 
    public void add(AbstractButton button) { 
     if (button.isSelected()) { 
      this.selected.add(button.getModel()); 
     } 
     super.add(button); 
    } 
} 

А вот как его использовать:

new ButtonGroupAtLeastOne().addAll(checkBox1, checkBox2) 

Все предложения приветствуются.

+2

ну, для лучшей помощи скорейшее сообщение [SSCCE] (http://sscce.org/), короткое, выполнимое, компилируемое – mKorbel

+0

хорошо, оно короткое, оно работает, оно компилируется ... и я не нужна помощь – Tibi

Смежные вопросы