Афоризм
К чему Вам в вашем возрасте здоровье?
Наталья Резник
Последние статьи

 • Компонент JDatePicker
Описание и пример компонента JDatePicker
сентябрь 2019
 • Компонент Tree
Описание и пример дерева Tree
сентябрь 2019
 • Grid с навигатором
Описание и пример Gridp с навигатором
сентябрь 2019
 • Компонент Grid
Описание и пример Grid библиотеки base-gui
август 2019
 • Библиотека base-gui
Описание компонентов библиотеки base-gui
август 2019
 • Оператор SELECT
Использование SQL-оператора SELECT
август 2019
 • Сокеты в Android
Использование сокетов в Android
июль 2019
 • Многомодульный maven
Пример создания многомодульного maven проекта
июнь 2019
 • Maven плагин launch4j
Создание exe-файла из исполняемого jar
июнь 2019
в помощь разработчикам 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