2010-01-13 17 views
3

Existe-t-il un moyen d'associer un groupe de JRadioButtons à un modèle de données pour qu'il soit plus facile de dire quel bouton (le cas échéant) est sélectionné?comment utiliser les groupes JRadioButton avec un modèle

Dans un monde idéal, je voudrais associer un groupe de N radiobuttons avec une classe enum qui a une valeur NONE et une valeur associée à chaque radiobutton.

Répondre

3

Je résolu mon problème, ce ne fut pas trop dur, donc partager et apprécier:

import java.util.EnumMap; 
import java.util.Map; 
import javax.swing.JRadioButton; 

public class RadioButtonGroupEnumAdapter<E extends Enum<E>> { 
    final private Map<E, JRadioButton> buttonMap; 

    public RadioButtonGroupEnumAdapter(Class<E> enumClass) 
    { 
     this.buttonMap = new EnumMap<E, JRadioButton>(enumClass); 
    } 
    public void importMap(Map<E, JRadioButton> map) 
    { 
     for (E e : map.keySet()) 
     { 
      this.buttonMap.put(e, map.get(e)); 
     } 
    } 
    public void associate(E e, JRadioButton btn) 
    { 
     this.buttonMap.put(e, btn); 
    } 
    public E getValue() 
    { 
     for (E e : this.buttonMap.keySet()) 
     { 
      JRadioButton btn = this.buttonMap.get(e); 
      if (btn.isSelected()) 
      { 
       return e; 
      } 
     } 
     return null; 
    } 
    public void setValue(E e) 
    { 
     JRadioButton btn = (e == null) ? null : this.buttonMap.get(e); 
     if (btn == null) 
     { 
      // the following doesn't seem efficient... 
        // but since when do we have more than say 10 radiobuttons? 
      for (JRadioButton b : this.buttonMap.values()) 
      { 
       b.setSelected(false); 
      } 

     } 
     else 
     { 
      btn.setSelected(true); 
     } 
    } 
} 
+0

Comment utiliser [EnumMap] (http://docs.oracle.com/javase/7/docs/api/java/util/EnumMap.html)? – xmedeko

+0

Je ne comprends pas votre question; J'ai utilisé EnumMap. –

+0

Désolé, mon erreur. – xmedeko