Афоризм
— Почему Вы не сделаете пластическую операцию?
— А толку! Фасад обновишь, а канализация все равно старая!
Фаина Раневская
Последние статьи

 • RawContacts
Необработанные контакты в Android
 • javax.crypto.Cypher
Cимметричное шифрование и дешифрирование
 • Random, Math.random
Генерация случайных чисел
 • Компонент JDatePicker
Описание и пример компонента JDatePicker
 • Компонент Tree
Описание и пример дерева Tree библиотеки base-gui
 • Grid с навигатором
Описание и пример Gridp с навигатором
 • Компонент Grid
Описание и пример Grid библиотеки base-gui
 • Библиотека base-gui
Описание компонентов библиотеки base-gui
 • Оператор SELECT
Использование SQL-оператора SELECT
в помощь разработчикам Swing-приложений

Компонент Gridp с панелью навигации

API (Application Programmer Interface) визуального компонента таблицы Gridp с панелью навигации из базового модуля base-gui.jar включает интерфейсы и классы пакета org.jabricks.basegui.gridp, представленные в следующей таблице :

Gridp компонент таблицы с панелью навигации
IGridp интерфейс методов таблицы с панелью навигации
GridpModel модель данных таблицы с панелью навигации
IPaginator интерфейс с callback-методами, реализуемый родителем
Paginator класс, формирующий интерфейс панели навигации
PaginatorConfig конфигуратор панели навигации

Табличный компонент 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 ()
Метод возвращает панель JPanel с таблицей JTable для размещения компонента Gridp в интерфейсе. Полосы прокрутки JScrollPane появляются в таблице автоматически, когда количество записей превышает количество видимых записей компонента.

getTable ()
Метод возвращает таблицу JTable.

setColumnsAlign (int[] align)
Метод выравнивания значений в ячейках. Размер массива align должен соответствовать количеству колонок.

setColumnsWidth (int[] width)
Метод определения ширины колонок. Размер массива width должен соответствовать количеству колонок.

setLocale (Locale locale, final Properties props)
Локализация панели навигации и заголовков колонок. Свойства props должны включать набор записей формата key=value, где key соответствуют наименованиям заголовков (значения col_names конструктора таблицы). Изменение надписей панели навигации и заголовков таблицы может быть выполнено в режиме run-time без перезагрузки формы. Чтобы изменить только локализованные надписи панели навигации можно вызвать метод setLocale следующим образом :

gridp.setLocale(new Locale("en"), null);

setDefaultRenderer (clazz, renderer)
Метод определения визуализатора renderer для значений класса clazz. Данный метод позволяет использовать собственный визуализатор для определенного класса. По умолчанию в таблице определены визуализаторы модуля base-gui.jar.

setReorderingAllowed(boolean allowed)
Метод разрешения перемещения колонок : allowed=true - колонки можно перемещать, allowed=false - колонки перемещать нельзя. Помните, что при перемещении колонок необходимо контролировать добавляемые и изменяемые записи в формате Object[] .

getPaginatorConfig()
Метод получения конфигуратора PaginatorConfig для настройки параметров панели навигации.

getModel
Метод получения модели загруженных в таблицу данных типа GridpModel.

setModel
Методы переопределения модели данных таблицы. При вызове данных методов компонент формирует новую модель данных. Данные методы следует использовать при загрузке в таблицу отличного от предыдущего набора данных (см. пример).

addRecords
Методы загрузки набора записей в таблицу. Набор записей может иметь тип либо Object[][], либо Vector<Vector<Object>>. Ранее загруженные в таблицу данные удаляются.

addRecord
Метод добавления одной записи типа Object[] в таблицу. Запись может быть добавлена в любое место таблицы, определенное параметром row (номер строки); отсчет строк от 0.

updateRecord (final int row, final Object[] record)
Метод обновления записи таблицы record в строке row. Отсчет строк начинается с 0.

delRecord (final int row)
Метод удаления записи в строке row. Отсчет строк начинается с 0.

delRecords (final int[] rows)
Метод удаления нескольких записей таблицы, определенных в строках rows. Отсчет строк начинается с 0.

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 не переопределяются. Основное назначение данного класса связано с определением информации, отображаемой в панели навигации. В следующей таблице представлены поля с описаниями :

ПолеМетоды GetМетоды SetОписание
int records_max int getRecords_max() void setRecords_max(int) максимальное количество записей
int pages int getPages() void setPages(int) количество страниц
int page int getPage() void setPage(int) текущая страница
int page_records int getPage_records() void setPage_records(int) количество записей на странице

Пример настройки конфигуратора

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

  Рейтинг@Mail.ru