410013796724260
• Webmoney
R335386147728
Z369087728698
в помощь разработчикам Swing-приложений
Компонент Gridp с панелью навигацииAPI (Application Programmer Interface) визуального компонента таблицы Gridp с панелью навигации из базового модуля base-gui.jar включает интерфейсы и классы пакета org.jabricks.basegui.gridp, представленные в следующей таблице :
Табличный компонент Gridp предназначен для постраничного разбиения и представления записей в интерфейсе приложения. Gridp реализует интерфейс IGridp. Класс GridpModel определяет модель данных таблицы. Компонент Gridp локализован и позволяет без «перезагрузки» формы определить заголовки колонок таблицы и надписи панели навигации согласно текущему значению языка (Locale). Классы визуализаторов позволяют настроить представление значений разных типов в ячейках таблицы. На следующем скриншоте представлен интерфейс примера Gridp, включающий таблицу с расположенной внизу панелью навигации. В левой части панели навигации размещаются компоненты управления набором записей, в правой – текстовые надписи с информацией о наборе данных, загруженных в таблицу. Конструкторы класса GridpКласс Gridp имеет два конструктора : public Gridp(IPaginator parent, Class<?>[] classes, String[] col_names); public Gridp(IPaginator parent, Class<?>[] classes, String[] col_names, String[] col_captions); В качестве параметров конструкторы получают родительский объект, реализующий интерфейс IPaginator, массивы классов (classes), наименований колонок (col_names) и заголовков колонок (col_captions). Первый конструктор использует col_names в качестве col_captions. Наименования колонок позволяют переопределить локализованые заголовки в режиме run-time без перезагрузки формы с таблицей. В родительском классе, реализующем интерфейс IPaginator, переопределены callback-методы, которые вызываются компонентом при нажатии на соответствующие кнопки панели навигации. Листинг интерфейса IGridpВ листинге интерфейса IGrid представлены методы управления таблицей : public interface IGrid { public JPanel asWidget(); public JTable getTable(); public void setColumnsAlign (final int[] align); public void setColumnsWidth (final int[] width); public void setLocale (final Locale locale, final Properties props); public void setLocale (final Properties props); public void setDefaultRenderer (Class<?> clazz, TableCellRenderer renderer); public void setReorderingAllowed(boolean allowed); public PaginatorConfig getPaginatorConfig(); public GridpModel getModel(); public void setModel (final Class<?>[] classes, final String[] columns); public void setModel (final Class<?>[] classes, final String[] colNames, final String[] columns); public void addRecords (final Object[][] data); public void addRecords (Vector<Vector<Object>> data); public void addRecord (final int row , final Object[] record); public void addRecord (final Object[] record); public void updateRecord (final int row, final Object[] record); public void delRecord (final int row); public void delRecords (final int[] rows); public int getRecordsCount(); } asWidget () getTable () setColumnsAlign (int[] align) setColumnsWidth (int[] width) setLocale (Locale locale, final Properties props) gridp.setLocale(new Locale("en"), null); setDefaultRenderer (clazz, renderer) setReorderingAllowed(boolean allowed) getPaginatorConfig() getModel setModel addRecords addRecord updateRecord (final int row, final Object[] record) delRecord (final int row) delRecords (final int[] rows) getRecordsCount() Модель данных GridpModelКласс GridpModel реализует модель данных таблицы и расширяет свойства класса AbstractTableModel. Управлять записями таблицы можно также через GridpModel. Отличие модели данных GridpModel от модели данных таблицы без панели навигации GridModel касается только методов управления редактируемой колонкой с компонентом JCheckBox; в компоненте Gridp данная функция не реализована. Листинг интерфейса IPaginatorЛистинг интерфейса IPaginator включает callback-методы, которые должен реализовать родительский класс : public interface IPaginator { public void selectFirst (); public void selectPrev (); public void selectNext (); public void selectLast (); public void selectPage (int page); } Первые четыре метода связаны с кнопками панели навигации для перехода к первой, к предыдущей, к следующей и к последней страницам. Последний метод selectPage(int) связан с полем номера текущей страницы. Конструктор Gridp в качестве параметра получает родительский объект. При нажатии мышью на одну из кнопок панели навигации, либо на клавишу <Enter> при расположении курсора в поле номера страницы, вызываются соответствующие callback-методы родительского объекта. Конфигуратор PaginatorConfigКонфигуратор PaginatorConfig таблицы Gridp представляет POJO-класс (Plain Old Java Object), включающий набор полей и Get/Set методы. Поскольку объект создается в единственном экземпляре, то методы equals и hashCode не переопределяются. Основное назначение данного класса связано с определением информации, отображаемой в панели навигации. В следующей таблице представлены поля с описаниями :
Пример настройки конфигуратораGridp gridp; . . . int RECORDS_MAX = 333333; int RECORDS_ON_PAGE = 30; // Определение параметров конфигуратора PaginatorConfig pageconf; pageconf = gridp.getPaginatorConfig(); // Максимальное кол-во записей pageconf.setRecords_max (RECORDS_MAX); // Количество страниц int pages = pageconf.getRecordsCount()/RECORDS_ON_PAGE+1; pageconf.setPages (pages); // Номер первой страницы pageconf.setPage (1); // Количество записей на странице pageconf.setPage_records(RECORDS_ON_PAGE); Конфигуратор таблицы PaginatorConfig можно получить методом getPaginatorConfig() класса Gridp. После этого следует определить параметры конфигуратора. Примечание: при добавлении или удаление записей компонент Gridp автоматически переопределяет параметры конфигуратора, связанные с максимальным количеством записей <records_max> и количеством страниц <pages>. Класс панели навигации PaginatorКласс Paginator формирует интерфейс панели навигации. Изображения для кнопок и шаблоны текстовых локализованных надписей Paginator извлекает из Ресурсных файлов модуля. Пример использования GridpАрхив base-gui-examples.zip включает демонстрационный пример Gridp. В примере представлена возможность загрузки в таблицу Gridp двух разных наборов данных, добавление и удаление записей, перемещение по страницам навигации. |