Question

J'utilise les éléments suivants

org.eclipse.jface.viewers.CheckboxCellEditor.CheckboxCellEditor(Composite parent)

Je crée une visionneuse de table avec cellEditors et procédez comme suit

CellEditor[] editors = new CellEditor[columnNames.length];
editors[7] = new CheckboxCellEditor(table);

J'ai un CellModifier qui a le suivant

public Object getValue(Object element, String property) {
        Object result = null;
        ...
        result = Boolean.valueOf(task.isDfRequested());
        return result;
}

 public void modify(Object element, String property, Object value) {
       item.isSelected(((Boolean)value).booleanValue());
}

Enfin, j'ai un LabelProvider qui a le suivant

 public String getColumnText(Object element, int columnIndex) {
        String result = "";
        try { 
            result = Boolean.toString(item.isSelected());
        } catch (Exception ex) { } 

        break;

Cependant, dans mon interface utilisateur au lieu d'avoir une case à cocher Je le mot vrai ou faux && clic résulte de commutation à l'état vrai ou faux. Toutes les idées sur lesquelles je n'ai pas une case à cocher ??

Était-ce utile?

La solution 3

Ce que j'ai décidé de faire est de simplement mettre en œuvre une bidouille d'autres utilisent.

Créer deux images de cases à cocher, on vérifié l'autre pas vérifié. Mettez l'état entre les deux en fonction de la valeur booléenne.

Il est pas parfait, mais pour l'instant il obtient le travail fait

Autres conseils

Je l'ai cherché dans le code source de classe CheckboxCellEditor et dans le constructeur le contrôle associé au CellEditor est créé dans la méthode createControl(Composite parent). Cette méthode est abstraite en classe CellEditor et il est mis en œuvre comme celui-ci dans CheckboxCellEditor:

protected Control createControl(Composite parent) {
    return null;
}

Ainsi, un contrôle n'est pas créé, c'est la raison pour laquelle vous ne voyez pas la case à cocher. Dans la documentation de la classe que vous pouvez lire:

  

Notez que cette mise en œuvre simplement   fakes et ne ne crée pas   de nouveaux contrôles. La simple activation de   cet éditeur signifie que la valeur de   la case à cocher est activée par le   les utilisateurs finaux; la méthode d'écoute   applyEditorValue est immédiatement appelé   signaler la modification.

Je résolu ce problème en utilisant un ComboBoxCellEditor par oui et aucun élément.

Cordialement.

Eh bien, je ne sais pas comment fonctionne SWT ou quel composant vous même parlez.

Mais je sais que lors de l'utilisation SWING vous pouvez avoir des éditeurs personnalisés pour une colonne dans une JTable. Si vous ne dites pas la table de la classe de données pour la colonne puis la méthode toString () des données est invoquée. Mais si vous dites la table que les données booléenne est affiché dans la colonne, la table utilisera l'éditeur de case à cocher.

Sons comme un symptôme similaire, mais je ne connais pas votre solution particulière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top