2015-04-07 2 views
0

У меня есть в моем приложении, которое имеет следующие особенности в TableViewer:Выберите строку в TableViewer

  • Он получает данные из веб-службы, а также при выборе строки, кнопки получить включен, и вы можете совершать операции (все эти операции вызывают веб-сервис, поэтому таблица остается в синхронизации с базой данных).
  • Когда я добавляю новую строку, я отправляю команду «добавить» в веб-службу и обновляю таблицу. Теперь у меня новая строка, и я знаю, какая строка новая.

Теперь я хочу, чтобы выбрать новую строку по умолчанию, и я попробовал много команд, как tableViewer.getTable().select(index); и, как сейчас:

public void selectAdded(int id) { 
    tableViewer.getTable().setSelection(id); 
} 

Эта картина показывает, что проблема: The two different type of selections

Верхний показывает, как он работает теперь с этим кодом. Строка ниже показывает, как она выглядит, когда я нажимаю строку. Проблема в том, что кнопки не активируются, и у меня есть два текстовых поля только для чтения, которые остаются пустыми, а не отображают необходимую мне информацию. Но когда я нажимаю, все работает нормально.

Что делать, чтобы добиться того, что selectAdded(int id) действует как один клик? Решение должно быть многоплатформенным (Mac/Windows), но, по крайней мере, на Mac.

ответ

1

Не используйте методы выбора Table, которые используют TableViewer. Вместо того, чтобы использовать

ISelection selection = new StructuredSelection(model object); 

tableViewer.setSelection(selection); 

«модель объекта» является модельным объектом для строки, которую хотите выбрать (как возвращаемый поставщика контента).

+0

Спасибо, он работает. Мой босс заметил, что было бы лучше, если выбор будет показан синим цветом (теперь он темно-серый). Есть идеи? –

+1

На большинстве платформ темно-синий используется, когда элемент управления (стол) имеет фокус, темно-серый, когда что-то еще имеет фокус. Изменение цвета фокуса затруднено. –

+0

Спасибо вам большое! Я добавляю 'tableViewer.getTable(). SetFocus();' и он отлично выглядит так, как я хотел. –

Смежные вопросы