Frage

Ich benutze Folgendes

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

Ich erstelle einen Tabellenzuschauer mit Zelligern und mache Folgendes

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

Ich habe einen CellModifier, der Folgendes hat

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());
}

Schließlich habe ich einen LabelProvider, der Folgendes hat

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

        break;

In meiner Benutzeroberfläche habe ich jedoch ein Kontrollkästchen, anstatt ein Kontrollfeld zu haben, das Wort wahr oder falsch und das Klicken auf das Problem führt dazu, dass der Status auf false oder true umschaltet. Irgendwelche Ideen, warum ich kein Kontrollkästchen habe?

War es hilfreich?

Lösung 3

Ich habe beschlossen, nur einen schmutzigen Hack implementieren, den andere verwendet haben.

Erstellen Sie zwei Bilder von Kontrollkästchen, einer überprüft die andere nicht überprüft. Schalten Sie den Zustand zwischen den beiden basierend auf dem Booleschen.

Es ist nicht perfekt, aber im Moment erledigt es den Job

Andere Tipps

Ich habe im Quellcode von gesucht CheckboxCellEditor Klasse und im Konstruktor wird die dem Zelleditor verbundene Kontrolle in der erstellt createControl(Composite parent) Methode. Diese Methode ist abstrakt in CellEditor Klasse und es ist so implementiert in CheckboxCellEditor:

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

Es wird also keine Kontrolle erstellt. Deshalb sehen Sie das Kontrollkästchen nicht. In der Dokumentation der Klasse können Sie lesen:

Beachten Sie, dass diese Implementierung sie einfach fällt und keine neuen Steuerelemente erstellt. Die bloße Aktivierung dieses Editors bedeutet, dass der Wert des Kontrollkästchens von den Endbenutzern umgeschaltet wird. Die Listener -Methode AppliceditorValue wird sofort aufgerufen, um die Änderung zu signalisieren.

Ich habe dies mit einem Comboboxcelleditor mit Ja und ohne Elemente gelöst.

Grüße.

Nun, ich habe keine Ahnung, wie SWT funktioniert oder welche Komponente Sie überhaupt sprechen.

Aber ich weiß, dass Sie bei der Verwendung von Swing benutzerdefinierte Redakteure für eine Spalte in einem JTable haben können. Wenn Sie der Tabelle nicht die Datenklasse für die Spalte mitteilen, wird die Methode der Daten von ToString () aufgerufen. Wenn Sie jedoch die Tabelle mitteilen, dass Boolesche Daten in der Spalte angezeigt werden, wird in der Tabelle den Kontrollkästchen -Editor verwendet.

Klingt nach einem ähnlichen Symptom, aber ich kenne Ihre spezielle Lösung nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top