Использование таблиц при программировании на языке Java.

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

Для использования таблиц в Java – приложениях существует класс JTable. Этот компонент является диспетчером сообщений генерируемых системой при взаимодействии с пользователем. Компонент преобразует системные сообщения во внутренний формат сообщений системы таблиц и передает их классу модели таблицы.

Моделью таблицы называется компонент, который описывает колонки строки и поведение таблицы и являющиеся производным от AbstractTableModel. Модель таблицы устанавливает компоненту JTable с помощью функции setModel.

Общая структура обмена сообщениями между моделью таблицы и пользователем имеет вид, приведенный на рисунке 7.

Рис. 7 Взаимодействие модели таблицы с пользователем.

Таким образом из рисунка 7 видно, что компонент JTable является своеобразным устройством ввода-вывода, а все управление таблицей выполняет непосредственно модель таблицы.

Как и при создании большинства классов на языке Java, при создании класса модели таблицы ряд функций необходимо переопределить. Список переопределяемых функций приведен в таблице 5.

Таблица 5. Функции, переопределяемые в классе дочернем от класса модели таблицы.

Функция Назначение
getValueAt() Функция, возвращающая значение ячейки таблицы имеющей указанный номер строки и номер столбца. Функция должна возвращать значение типа Object
getColumnCount() Функция, возвращающая текущее количество колонок таблицы. Функция должна возвращать целочисленное значение.
getRowCount() Функция, возвращающая текущее количество строк таблицы. Функция должна возвращать целочисленное значение.
getColumnName() Функция, возвращающая заголовок колонки таблицы. В качестве параметра функции передается номер колонки. Возвращать функция должна значение типа String
getColumnClass() Функция, возвращающая класс колонки таблицы. В качестве параметра функции передается номер колонки. Возвращать функция должна значение типа Class. Данный параметр необходим класс JTable для определения способа отображения информации в ячейках колонки таблицы. Это может быть текст, числовое значение, изображение и т.д.
isCellEditable() Функция должна возвращать истину, если разрешено редактирование ячейки, указанной в качестве параметра с клавиатуры и ложь если запрещено.
setValueAt() Функция вызывается компонентом JTable при завершении редактирования ячейки таблицы. В качестве параметров функции передается результат редактирования и позиция ячейки в таблице.

 

Следует заметить, что модель таблицы не имеет своего буфера для хранения данных, поэтому его надо организовывать отдельно и обрабатывать в зависимости от сообщений компонента JTable. Описание класса таблицы должно иметь следующий вормат.

// Определение пакета, в котором находиться класс

package имя пакета;

// Подключение библиотеки работы с таблицами

import javax.swing.table.*;

// Описание класса модели

public class имя класса extends AbstractTableModel {

private тип списка данных data=null;

public имя класса() {

data=new тип списка данных ();

}

// Функция, возвращающая компоненту JTable количество колонок таблицы

public int getColumnCount() {

return количество колонок;

}

// Функция, возвращающая компоненту JTable данных ячейки

public Object getValueAt(int row, int col) {

return data.getData(row,col);

}

// Функция, возвращающая компоненту JTable данные ячейки

public int getRowCount() {

return data.GetCount();

}

// Функция, возвращающая компоненту JTable заголовок ячейки

public String getColumnName(int column)

{

return data.getHeader(column);

}

// Функция, возвращающая компоненту JTable класс данных ячейки

public Class getColumnClass(int col)

{

return getValueAt(0,col).getClass();

}

// Функция, возвращающая компоненту JTable возможность редактирования

// данных ячейки

public boolean isCellEditable(int row, int col)

{

return false;

}

// Функция, с помощью которой, компонент JTable возвращает значение ячейки

// после редактирования

public void setValueAt(String aValue, int row, int column)

{

data.setData(row,column,aValue);

}

}

 

В качестве буфера данных, может выступать массив или список, структура которого описана в отдельном классе.

 








Дата добавления: 2016-01-03; просмотров: 841;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.