una casella di controllo di testo e non CheckboxCellEditor mostra
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 ??
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.