2010-01-06 4 views
1

Je suis coincé dans les valeurs de liaison d'enum à RadioButton. Disons que j'ai un haricot:Liaison des valeurs enum à RadioButton en Java

public class ValueObject { 
    public enum ValueEnum { 
    FIRST_VALUE, 
    SECOND_VALUE 
    } 

    protected ValueEnum value; 
} 

Je veux créer RadioButtons Swing où l'utilisateur peut sélectionner l'une de ces deux valeurs ENUM. Comme j'utilise Netbeans comme IDE je voudrais aussi le faire en utilisant la liaison de données, à savoir. lier les boutons radio à {valueObject.value}. Des idées? Merci beaucoup!

Répondre

1

Whow, le convertisseur était une excellente idée! J'ai créé le convertisseur ci-dessous et l'ai initialisé avec la valeur enum.

public class ObjectEqualityConverter extends Converter { 

    private Object o; 

    public ObjectEqualityConverter() {} 

    public ObjectEqualityConverter(Object o) { 
     this.o = o; 
    } 

    public Object convertForward(Object value) { 
     return (o != null && o.equals(value)) ? Boolean.TRUE : Boolean.FALSE; 
    } 

    public Object convertReverse(Object value) { 
     return (Boolean.TRUE.equals(value)) ? o : null; 
    } 
} 
+0

Exactement! Heureux d'entendre que cela a fonctionné :-) –

0

Je dirais que ça ne marchera pas. Habituellement, vous créez une liaison entre le widget et une variable. Votre widget est un bouton radio à deux états, vous devez donc le lier à une variable booléenne. À la suite de cette liaison, si vous appuyez sur le bouton, la variable booléenne devient true, si le bouton est désélectionné, la variable booléenne retourne à false. Avec la liaison de données JFace, vous implémenteriez un convertisseur qui convertirait entre booléen et les deux valeurs enum. Ce convertisseur ferait partie de la liaison de données (vous pouvez ajouter des validateurs et des convertisseurs). Malheureusement je ne l'ai pas fait avec Swing ou netbeans, mais l'approche devrait être similaire: soit vous ajoutez un convertisseur à la liaison ou vous devez vous lier à une variable booléenne et faire la conversion (mapping) par la suite.

Questions connexes