Domanda

Sto usando il seguente

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

Sto creando un visualizzatore di tabella con cellEditors e fare il seguente

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

Ho un CellModifier che ha la seguente

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

Finalmente ho un LabelProvider che ha la seguente

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

        break;

Tuttavia, a mio UI invece di avere una casella di controllo che ho la parola vera o falsa && clic su di essa si traduce nel passaggio di stato di falso o vero. Delle idee su perché non ho una casella di controllo ??

È stato utile?

Soluzione 3

Quello che ho deciso di fare è quello di implementare solo un hack sporco altri hanno utilizzato.

Creare due immagini di caselle di controllo, uno controllato l'altro non selezionato. Passare lo stato tra i due in base alla booleana.

Non è perfetto, ma per ora si ottiene il lavoro fatto

Altri suggerimenti

Ho cercato nel codice sorgente della classe CheckboxCellEditor e nel costruttore il controllo associato al CellEditor si crea nel metodo createControl(Composite parent). Questo metodo è astratto in classe CellEditor ed è implementato come questo in CheckboxCellEditor:

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

Quindi un controllo non si crea, è per questo che non si vede la casella di controllo. Nella documentazione della Classe si può leggere:

  

Si noti che questa implementazione semplicemente   falsi e lo fa non crea alcun   nuovi controlli. La semplice attivazione   questo editor significa che il valore di   la casella di controllo viene commutato dal   gli utenti finali; il metodo ascoltatore   applyEditorValue viene subito chiamato   per segnalare la modifica.

Ho risolto questo con un ComboBoxCellEditor con sì e no oggetti.

Saluti.

Beh, non ho idea di come funziona SWT o cosa componente che si sta ancora parlando.

Ma so che quando si utilizza swing si può avere editor personalizzati per una colonna in una JTable. Se non dite al tavolo la classe dei dati per la colonna allora il metodo toString () dei dati viene richiamato. Ma se vi dico la tabella che i dati booleano viene visualizzato nella colonna poi il tavolo userà l'editor casella di controllo.

Suona come un sintomo simile, ma non so la vostra soluzione particolare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top