Афоризм
У тебя ноги уже кончились, а платье еще не началось!
Лариса Гузеева
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698
в помощь разработчикам Swing-приложений

Описание компонента Grid

Визуальный компонент таблицы Grid библиотеки base-gui.jar включает интерфейсы и классы пакета org.jabricks.basegui.grid, представленные в следующей таблице :

IGrid интерфейс методов таблицы
Grid компонент таблицы, реализующий интерфейс IGrid
GridModel модель данных таблицы, расширяющая свойства класса AbstractTableModel
CheckBoxCellEditor редактор логического значения ячейки таблицы, расширяющий свойства класса DefaultCellEditor
BooleanListener слушатель изменений логических значений ячеек, реализующий интерфейс TableModelListener

Табличный компонент Grid предназначен для представления ограниченного количества записей в интерфейсе приложения. Grid реализует интерфейс IGrid. Класс GridModel используется в качестве модели данных таблицы.

Компонент Grid локализован и позволяет без «перезагрузки» формы определить заголовки колонок таблицы согласно текущему значению языка (Locale). Классы визуализаторов позволяют настроить представление значений разных типов в ячейках таблицы.

Конструкторы класса Grid

Компонент таблицы Grid имеет три конструктора :

public Grid(Class<?>[] classes, 
            String[]   col_names);
public Grid(Class<?>[] classes, 
            String[]   col_names,
            String[]   col_captions);
public Grid(GridModel  grid_model);

В качестве параметров первый и второй конструкторы получают массивы классов (classes), наименований колонок (col_names) и заголовков колонок (col_captions); первый конструктор использует col_names в качестве col_captions. Наименования колонок позволяют переопределить локализованые заголовки в режиме run-time без перезагрузки формы с таблицей.

Третий конструктор позволяет создать объект таблицы с определенной моделью данных grid_model.

Листинг интерфейса IGrid

В листинге интерфейса IGrid представлены методы управления таблицей :

public interface IGrid 
{
    public JPanel     asWidget();
    public JTable     getTable();
    public GridModel  getModel();

    public void  setColumnsAlign (final int[] align);
    public void  setColumnsWidth (final int[] width);
    public void  setLocale (final Properties  props);

    public void  addCheckBoxEditor (final int column);
    public int[] getCheckedRows    ();

    public void  setDefaultRenderer (Class<?> clazz,
                        TableCellRenderer  renderer);

    public void  setReorderingAllowed(boolean allowed);


    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);
}

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

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

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

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

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

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

addCheckBoxEditor (int)
Метод определения редактируемой колонки с компонентами JCheckBox. В таблице можно определить только одну редактируемую колонку с компонентами JCheckBox.

getCheckedRows
Метод возвращает список выделенных строк.

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

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

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.

Модель данных GridModel

Класс GridModel, расширяющий свойства класса AbstractTableModel, реализует модель данных таблицы. Через GridModel можно также управлять записями таблицы. В листинге представлены методы модели данных. Закомментированные строки с аннотацией @Override показывают переопределенные методы родительского класса AbstractTableModel.

// Конструктор класса
GridModel(Class<?>[] classes, String[] columnsCaption);

/**
 * Дескриптором @Override отмечены переопределенные 
 * методы родительского класса AbstractTableModel
 */

// Количество колонок в таблице
// @Override
public int getColumnCount();

// Количество строк в таблице
// @Override
public int getRowCount();

// Чтение значения в ячейке 
// @Override
public Object getValueAt(int row, int column);

// Определение значения ячейки
// @Override
public void setValueAt(Object obj, int row, int column);

// Чтение заголовка колонки
// @Override
public String getColumnName(int column);

// Метод определения типа значения в колонке
// @Override
public Class<?> getColumnClass(int column);

// Выравнивание значений в ячейках
public void setColumnsAlign(final int[] align);
public int[] getColumnsAlign()

// Определение заголовка колонки
public void setColumnCaption(int column, String caption);

// Функция проверки редактиреуемости ячейки
public boolean isCellEditable(int row, int column);

// Метод определения редактируемой колонки
public void setColumnEditable(int column);

// Метод определения набора данных
public void setTableData(Vector<Vector<Object>> tableData);

// Метод чтения данных
public Vector<Vector<Objec>> getTableData();

/*
 * Методы управления редактируемой колонкой
 * с компонентом JCheckBox
 */
public int  getCheckBoxEditorColumn();
public void setCheckBoxEditorColumn(final int column);

Классы CheckBoxCellEditor, BooleanListener

Класс CheckBoxCellEditor определяет формирование редактируемой ячейки таблицы. BooleanListener реализует интерфейсы методов TableModelListener. В совокупности данные классы позволяют определить в таблице колонку с редактируемыми ячейками типа JCheckBox. Следующий пример демонстрирует определение третьей (отсчет от 0) редактируемой колонки с компонентами типа JCheckBox с использованием метода addCheckBoxEditor класса Grid :

Grid grid = new Grid(classes, names, titles);

grid.addCheckBoxEditor(2);

Пример использования Grid

Архив base-gui-examples.zip включает 2 демонстрационных примера использования таблицы Grid :

  • пример управления записями таблицы Grid;
  • пример таблицы Grid с редактируемыми ячейками JCheckBox.

В примерах демонстрируется представление набора данных, добавление и удаление записей, выделение записей и подключение собственного визуализатора.

  Рейтинг@Mail.ru