Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > ListView


Автор: zss 16.12.2007, 01:16
нужен компонент рисующий таблицы иконок, а также возможность вместо иконок вставлять ckeckBox-ы

можно ли такое сделать ?

Автор: W0LF 16.12.2007, 10:54
А что такое таблица иконок и чекбоксов?

Автор: zss 16.12.2007, 13:27
Цитата(W0LF @  16.12.2007,  10:54 Найти цитируемый пост)
А что такое таблица иконок и чекбоксов? 

ну это таблица, в которой можно размещать иконки в ячейках


Автор: hamsterKSU 17.12.2007, 02:16
а не сложновато ли будет телефону?

Автор: zss 17.12.2007, 07:27
Цитата(hamsterKSU @  17.12.2007,  02:16 Найти цитируемый пост)
а не сложновато ли будет телефону? 

у маей Nokia так устроин интерфейс. Так что думаю не сложновато smile

Автор: javastic 17.12.2007, 10:55
zss, это натив, потому и работает нормально. Хотя на многие смартах с Симбианом часто замечал торможение при навигации по стандартному меню.

Автор: VOS 17.12.2007, 11:00
Ну если скроллинги не нужны и тем более ячейки одинакового размера, то думаю нет проблем руками нарисовать таблицу и в нужной ячейке отрисовать картинку. 
Если нужны скроллинг и т.д., то попробуйте DataGrid.
Наследуете от него.  Например IconDataGrid
Размещаете в ячейки имена файлов иконок или там индекс, если все иконки в одной картинке.

Ну а потом переопределяете метод  DrawCell, например так:
Код


  protected void DrawCell(int x, int y, boolean Selected, int Width) {

        if(Selected)
            DrawImageByClip(GetSelImageByName(getCell(x,y)),getColumn(x).getTypeDraw(),Width);
        else
            DrawImageByClip(GetImageByName(getCell(x,y)),getColumn(x).getTypeDraw(),Width);
    }


где Вам останется написать функцию GetSelImageByName(getCell(x,y)) - по имени/индексу иконки возвращает Image для отрисовки

Если в некоторых ячейках нужен текст, то вначале метода добавите условие:
Код


 if(условие) {
            super.DrawCell(x,y,Selected,Width);
            return;
        }

Если будет клинить, попробуйте setDoubleBuffered(true);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)