Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тестирование контрола DataGrid 
V
    Опции темы
VOS
Дата 31.1.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 6
Всего: 8



В одном довольно большом моем проекте возникла необходимость реализации клиентской части, 
которая работала бы на мобильных телефонах. Одним из ключевых элементов этой клиентской части
является DataGrid, предназначенный для хранения, отображения и манипулирования данными в плоской двумерной таблице.
В Java (тем более J2ME) я новичок, поэтому с удивлением обнаружил, что этот элемент не входит в состав стандартных контролов.
Поиск не дал приемлемых результатов, поэтому пришлось реализовывать самому. Тестовый мидлет прикреплен к сообщению.
По идее эта версия должна работать на MIDP 1.0 (extends Canvas) (для MIDP 2.0 будет и версия extends CustomItem)

Интересует:
 - приемлимо ли он работает на телефонах с MIDP 1.0 (мерцание и т.д. при включенном/отключенном меню Draw buffered)
 - список телефонов на которых работает
 - мнения/предложения/пожелания

Если контрол кого-то заинтересует, то вот краткое описание
Код


/**
 * Класс DataGrid предназначен для хранения, отображения и манипулирования
 * данными в плоской двумерной таблице
 * Поддерживаются:
 * Автоматический пропорциональный скролллинг записей в таблице
 *       + Вертикальный скроллинг
 *       - Горизонтальный скроллинг (Next version)
 * + Отрисовка сетки таблицы
 *      + ColLines
 *      + RowLines
 * + Выделение ячейки или строки (RowSelect)
 * + Колонки таблицы разной ширины
 * + Многострочные ячейки (устанавливается кол-во строк в таблице)
 * - Строки разной ширины (Next Version)
 * - Объединенные ячейки (Next Version)
 * + WordWrap
 * + Отрисовка изображений в ячейке согласно стилю FieldAttrib.TypeDraw
 * + Видимые и скрытые столбцы
 * + Автоматически вычисляемая ширина последнего видимого столбца под размер экрана
 * + Фиксированные строки (используемые обычно в качестве заголовка таблицы)
 *      + Фиксированных строк (заголовков) может быть несколько
 *      + Цвет устанавливается :)
 * + "Подвал" (footer) таблицы. Это фиксированные строки с объединенными ячейками,
      размещенные внизу таблицы для отображения в зависимости от стиля (StyleDrawInFooter):
 *      + значений столбцов активной строки, у которых атрибут DrawInFooter=true
 *      + статического текста
 *      + статический текста и значение столбца активной строки, у которых атрибут DrawInFooter=true
 *      - суммы значений (next version)
 *      + количества записей в таблице
 *      + количества записей в таблице и значение столбца активной строки, у которых атрибут DrawInFooter=true
 *      + строк "подвала" может быть несколько, каждой из них может быть задан свой стиль
 * + Двойная буферизация :)
 * + Установка цвета
 *      + Фиксированных ячеек
 *      + Сетки
 *      + Скроллируемой области
 *      + Подвала таблицы
 *      + Текста фиксированных ячеек
 *      + Текста данных
 * + Форма просмотра строки
 * + TableLoader 
 *      + теговый формат
 *      - XML (Next version)
 * @version 1.1
 */



Присоединённый файл ( Кол-во скачиваний: 71 )
Присоединённый файл  pack.zip 10,74 Kb
PM MAIL   Вверх
javastic
Дата 31.1.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Компонент очень понравился. Глюков не заметил. Добро пожаловать на форум! smile


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
VOS
Дата 31.1.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 6
Всего: 8



Спасибо, жаль поздно нашел Ваш форум.
PM MAIL   Вверх
javastic
Дата 31.1.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Лучше поздно, чем никогда... ;)


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Vladimir35
Дата 1.2.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 1.8.2006

Репутация: 3
Всего: 3



Цитата(VOS @ 31.1.2007,  16:57)
Спасибо, жаль поздно нашел Ваш форум.

К сожалению, это известная проблема.
Вот некоторый список известных j2me форумов. Отсортированно по языку и крутости форума.

Забавно, что сановский форум туда не попал (и форумы производителей тоже).
PM MAIL WWW   Вверх
slider3d
Дата 1.2.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



И мне понравился.   smile 
Вот только надо вовремя остановится. Потому что лучшее враг хорошего. 
PM MAIL   Вверх
Samuil
Дата 2.2.2007, 04:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



VOS, Молодец, мне тож оч. понравился smile 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
VOS
Дата 2.2.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 6
Всего: 8



Спасибо за отзывы.
И отдельное спасибо Vladimir35 за ссылки.

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

Это сообщение отредактировал(а) VOS - 2.2.2007, 11:21

Присоединённый файл ( Кол-во скачиваний: 36 )
Присоединённый файл  pack.zip 12,69 Kb
PM MAIL   Вверх
javastic
Дата 2.2.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



SE k610i


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Vladimir35
Дата 2.2.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 1.8.2006

Репутация: 3
Всего: 3



А опенсорс будет? Или хотя бы как библиотека? А собственные клетки можно будет подключать?
PM MAIL WWW   Вверх
VOS
Дата 2.2.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: 6
Всего: 8



На следующей неделе планирую довести его до релиза. Мне важно его оттестировать (см. верхний пост), поэтому приглашаются те, кто может помочь в этом ну и в написании/корректировании документации на английском smile Тем кто примет участие в тестировании/написании документации бесплатно предоставлю исходники и право использования в своих проектах. Желательно только упомянуть автора, хотя бы в документации.

По поводу того как  будет распространяться в дальнейшем (free или коммерч.), я еще не решил, т.к. не знаю рынка и как это делается smile
Буду рад получить консультацию.

В библиотеку помимо DataGrid и TableLoader (теги и xml) планирую включить модуль синхронизации с сервером по HTTP с возможностью шифрования трафика.

Клетки/строки и т.д. могут подключаться например так:
Код

        grid = new DataGridEx(Caption,mydisplay,8);
        grid.getColumn(0).setColumnAttrib(20,true,false,1);
        grid.getColumn(1).setColumnAttrib(35,true,true,1);
        grid.getColumn(2).setColumnAttrib(40,true,true,1);
        grid.getColumn(3).setColumnAttrib(50,false,true,1);
        grid.getColumn(4).setColumnAttrib(40,true,true,1);
        grid.getColumn(3).setDrawInFooter(true);
        grid.getColumn(5).setColumnAttrib(60,false,true,1);
        grid.getColumn(6).setColumnAttrib(47,false,true,1);
        grid.getColumn(7).setColumnAttrib(40,false,true,1);
        grid.getColumn(3).setStaticText("Static text: ");
        grid.AutoSizeLastColumn();
        grid.setFixedRowCount(1);
        grid.setFooterRowCount(1);


        Record rec;
        rec=grid.AppendRow();
        rec.setData(0," ");
        rec.setData(1,"№");
        rec.setData(2,"Date");
        rec.setData(3,"Beneficiar");
        rec.setData(4,"Sum");
        rec.setData(5,"Account");
        rec.setData(6,"Bank");
        rec.setData(7,"Type");

        for (int i=0;i<40;i++)
        {
             rec=grid.AppendRow();
             rec.setData(1,String.valueOf(i+1));
             rec.setData(2,"09.08");
             rec.setData(3,"Choose 'RowCount' to view full text № ("+String.valueOf((i+1*10000))+")");
             rec.setData(4,String.valueOf((i+1)*20)+".00");
             rec.setData(5,"0479"+String.valueOf((i+1)*20));
             rec.setData(6,String.valueOf((i+1))+" bank");
             if(i%6==0)
                 rec.setData(7,"In");
              else
                 rec.setData(7,"Out");
         }

        grid.setRowLinesCount(1);
        grid.setDoubleBuffered(false);
        grid.setRowSelect(false);
        grid.refresh();


PM MAIL   Вверх
javastic
Дата 2.2.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



ну тогда ещё надо оформить стандартную доку по классам, методам и интерфейсам.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
slider3d
Дата 2.2.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



VOS не думаю что  имеет большую коммерческую ценность. Каждый более - менее опытный программист без труда реализует DataGrid а новички вряд-ли  будут покупать что-то. И в NetBeans есть реализовано что-то подобное.Правда по красоте им до тебя далеко(respect). 

Есть небольшое предложение. Например, если таблица содержит клетку с большим объемом информации сделай так чтобы при наведении курсора по прошествии некоторого времени всплывала как бы подсказка из содержимим которое не видно. Ну, плохо выразился, но идея понятна?
PM MAIL   Вверх
javastic
Дата 2.2.2007, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Согласен, было бы не плохо вывести это в заголовок - движущийся.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Vladimir35
Дата 3.2.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 1.8.2006

Репутация: 3
Всего: 3



Цитата(VOS @ 2.2.2007,  14:18)
Клетки/строки и т.д. могут подключаться например так

Я имел в виду что-то вроде
Код

rec.setData(1,new MyCell());

То есть для клеток есть интерфейс Cell, и я его реализуя, мог бы добавлять свои собственные клетки.

Как обстоят дела с объединенными клетками? Что происходит, если таблица не правильно сформирована?

Это сообщение отредактировал(а) Vladimir35 - 3.2.2007, 16:08
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.