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 двух разных наборов данных, добавление и удаление записей, перемещение по страницам навигации. |
