Вместо использования свойства text вы можете вместо этого использовать свойство data.
Преимущества:
- вы можете прикрепить данные (например, управляющую или сложную структуру данных) непосредственно к элементу таблицы.
- единственное, что нужно знать при создании элемента таблицы в редакторе ячеек таблицы, - это ссылка на объект, которая будет сохранена в свойстве data.
- вам не нужны такие средства обработки событий (просто читайте данные элементов управления, когда они вам действительно нужны).
Создать:
TableItem item = new TableItem(table, SWT.None);
TableEditor editor = new TableEditor(table);
Button checkbox = new Button(table, SWT.CHECK);
checkbox.pack();
editor.setEditor(checkbox,item,0);
item.setData("cb",checkbox); // using key enables you to add more pieces of complex data
Читать:
for (TableItem item : table) {
Button checkbox = (Button) item.getData("cb");
if (checkbox.getSelection()) { /* ... do whatever you want */ }
}
Когда таблица появляется, флажок виден и его можно щелкнуть. Использование метода setText не работает в случае прозрачных фоновых элементов управления -> вы увидите текст ячейки элементов таблицы ниже
ваш контроль (я пробовал это).
В любом случае было бы намного проще, если бы можно было расширить класс элементов таблицы, чтобы скрыть даже ключ данных. Но, как обычно, в подклассе отказано.