SWT-ComboBoxCellEditor / значение по умолчанию


Я хотел бы, чтобы мой ComboBoxCellEditor мог иметь 3 возможных выбора. Сейчас у него есть только " да " или "нет". Я бы хотел, чтобы у него было и да, и нет, и то, и другое.

Также значения выбора combobox не отображаются в таблице, если не щелкнуть ячейку. Трудно сказать, есть ли в ячейке таблицы выбор, если они не щелкают в пустой ячейке. Я бы хотел, чтобы она хотя бы показывала стрелку вниз.
Я читал кое-где, что единственный способ обойти это-это чтобы установить значение по умолчанию.

  1. Я не знаю, как добавить 3-е значение. Я добавлю свой код, пытаясь добавить 3-е значение

  2. Как заставить combobox появиться в таблице, не щелкнув сначала по ячейке?

.

public class OptionEditingSupport extends EditingSupport {

    private ComboBoxCellEditor cellEditor;

    public OptionEditingSupport(ColumnViewer viewer) {
        super(viewer);
        cellEditor = new ComboBoxCellEditor(((TableViewer)viewer).getTable(), new String[]{"Yes", "No", "Both"}, SWT.READ_ONLY);

    }

    protected CellEditor getCellEditor(Object element) {
        return cellEditor;
    }

    protected boolean canEdit(Object element) {
        return true;
    }

    protected Object getValue(Object element) {
        return 0;
    }

    protected void setValue(Object element, Object value) 
    {
        if((element instanceof AplotDatasetData) && (value instanceof Integer)) {
            Integer choice = (Integer)value;
            String option = (choice == 0? "Yes":"No":"Both"); **<- Error Here
            ((AplotDatasetData)element).setMarkupValue(option);
            getViewer().update(element, null);
        }
    }
}
2 2

2 ответа:

Условный оператор

x ? y : z

Является тернарным оператором, который внутренне делает:

if(x)
    y;
else
    z;
Таким образом, вы можете использовать его только с тремя компонентами. Используйте an if else if else вместо этого:
Integer choice = (Integer)value;
String option = "";

if(choice == 0)
    option = "Yes";
else if(choice == 1)
    option = "No";
else
    option = "Both";

TableEditor может использоваться для отображения любого виджета поверх ячейки таблицы. Это должно решить вашу проблему с показом Combobox, чтобы пользователь знал, что для этой строки и столбца возможен выбор.

Я не уверен, что понимаю ваш вопрос о 3-х отборах.