GWT celltable Как создать ячейку выбора в edittextcell?

#java #gwt #cell #gwt-2.2-celltable

#java #gwt #ячейка #gwt-2.2-celltable

Вопрос:

Я хочу создать редактируемую ячейку с типом данных boolean.

Я не хочу использовать ячейку выбора для логического типа данных

Ячейка моего столбца testBooleanColumn содержит строку со значением true, false……….

когда я нажму на ячейку, присутствующую в testBooleanColumn, тогда эта ячейка должна быть редактируемой, и в этой редактируемой ячейке я хочу показать ячейку выбора со значением (true, false). когда пользователь изменяет значение из selectioncell либо true, либо false, это значение устанавливается в редактируемую ячейку в testBooleanColumn

Как это сделать? любой намек? или пример кода для этого варианта использования?

Комментарии:

1. Ваш вопрос действительно трудно понять. Может быть, вы можете уточнить. У вас есть таблица ячеек с кучей столбцов. Один столбец (testBooleanColumn) должен быть доступен для редактирования, но вы не хотите использовать ячейку выбора? Я предполагаю, что вы хотите добиться отображения ячейки выбора при нажатии на ячейку и отображения какой-либо другой ячейки в режиме чтения (когда ячейка не имеет фокуса). это правильно?

2. @timeu Спасибо за ответ, вы правы. Я хочу отображать ячейку выбора, когда пользователь нажимает на editableTextCell, и отображать какую-либо другую ячейку (editableTextCell) в режиме чтения (когда ячейка не имеет фокуса).

Ответ №1:

Это можно сделать тремя способами:

  1. Используйте CompositeCell с ClickTextCell и SelectionCell и переопределите метод визуализации CompositeCell для отображения только ClickTextCell.
    При нажатии на ClickTextCell автоматически вызывается ValueUpdater.
    В функции обновления ValueUpdater вы должны установить некоторое логическое значение в вашей ячейке ClickTextCell. Затем вам нужно проверить в методе рендеринга вашей составной ячейки это логическое значение, и если оно установлено, то отобразите ячейку выбора вместо ячейки ClickTextCell.

  2. Создайте пользовательскую ячейку, расширяющую AbstractEditableCell, например (см. Этот учебник) и реализуйте функциональность самостоятельно. Вы можете проверить код для SelectionCell и EditTextCell и скопировать большую его часть. По сути, у вас должен быть какой-то флаг, который устанавливается, когда ячейка получает фокус. В методе рендеринга вы должны либо отобразить выпадающий список, либо просто текст.

  3. Расширьте либо EditTextCell, либо SelectionCell и реализуйте недостающую функциональность. Преимущество заключается в том, что вы, вероятно, можете повторно использовать некоторые методы рендеринга, и вам не нужно писать полный код рендеринга самостоятельно.

Комментарии:

1. Спасибо за ответ. Вы создали такую пользовательскую ячейку? любой пример кода для того же?

2. На самом деле я ее не создавал, но вы можете просто посмотреть код для SelectionCell или EditTextCell. Это должно быть то же самое.