#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:
Это можно сделать тремя способами:
-
Используйте CompositeCell с ClickTextCell и SelectionCell и переопределите метод визуализации CompositeCell для отображения только ClickTextCell.
При нажатии на ClickTextCell автоматически вызывается ValueUpdater.
В функции обновления ValueUpdater вы должны установить некоторое логическое значение в вашей ячейке ClickTextCell. Затем вам нужно проверить в методе рендеринга вашей составной ячейки это логическое значение, и если оно установлено, то отобразите ячейку выбора вместо ячейки ClickTextCell. -
Создайте пользовательскую ячейку, расширяющую AbstractEditableCell, например (см. Этот учебник) и реализуйте функциональность самостоятельно. Вы можете проверить код для SelectionCell и EditTextCell и скопировать большую его часть. По сути, у вас должен быть какой-то флаг, который устанавливается, когда ячейка получает фокус. В методе рендеринга вы должны либо отобразить выпадающий список, либо просто текст.
-
Расширьте либо EditTextCell, либо SelectionCell и реализуйте недостающую функциональность. Преимущество заключается в том, что вы, вероятно, можете повторно использовать некоторые методы рендеринга, и вам не нужно писать полный код рендеринга самостоятельно.
Комментарии:
1. Спасибо за ответ. Вы создали такую пользовательскую ячейку? любой пример кода для того же?
2. На самом деле я ее не создавал, но вы можете просто посмотреть код для SelectionCell или EditTextCell. Это должно быть то же самое.