Читаем Java 7 полностью

Boolean.TRUE : Boolean.FALSE; default: return null;

}

}

}

При всяком изменении модели или ее содержимого в ней происходит событие класса TableModelEvent. Этот класс различает три типа событий: insert, delete и update и возвращает тип события методом getType (). Кроме того, класс отслеживает диапазон строк, в которых произошло событие, и столбец. Эти сведения можно получить методами getFirstRow( ), getLastRow() и getColumn(). Если последний из этих методов вернул константу all_columns, то это означает, что событие затронуло все столбцы. Слуша-

тель данного события может быть присоединен к модели методом

addTableModelListener(TableModelEvent).

Есть еще две комбинации типов события TableModelEvent. Сочетание update, all_columns и константы MAX_VALUE в качестве значения метода getLastRow () говорит о том, что была изменена вся Модель и Вид должен переписать на экране всю таблицу. Сочетание

update, all_columns и header_row — результат применения метода getFirstRow() — сообщает о том, что структура таблицы изменена — добавлен или удален столбец, Виду надо изменить структуру столбцов и перечертить таблицу на экране. Впрочем, это изменение отслеживается событием TableColumnModelEvent.

После определения модели ячеек ее надо установить в таблицу методом setModel (TableModel) или воспользоваться конструктором таблицы, как показано в листинге 13.2.

Свойства столбца таблицы TableColumn

Класс TableColumn хранит информацию о столбце таблицы: минимальную, максимальную и текущую ширину столбца, возможность изменения ширины, заголовок, индекс столбца в модели данных, ссылки на объекты классов TableCellEditor и TableCellRenderer. Для доступа к этой информации в классе есть методы

getXxx()/setXxx().

Особенно часто приходится использовать методы setMinWidth(int), setMaxWidth (int) и setPreferredWidth (int), поскольку ширина столбцов и всей таблицы, задаваемая по умолчанию, редко удовлетворяет разработчика.

Модель столбцов таблицы

Модель хранения столбцов таблицы описана интерфейсом TableColumnModel, который реализован классом DefaultTableColumnModel. Эта модель собирает сведения обо всех столбцах таблицы в виде вектора экземпляров класса TableColumn. Кроме того, запоминается ширина промежутков между колонками и общая ширина таблицы. Модель хранит объект класса ListSelectionModel, определяющий правила выделения столбцов и содержащий сведения о выделенных столбцах таблицы.

Порядок следования столбцов в модели может не совпадать с их порядком в модели ячеек таблицы. Модель может переставлять столбцы методом moveColumn(int oldind, int newind), эти перестановки не меняют модель ячеек таблицы.

При каждом изменении модели — добавлении или удалении столбцов, их перестановках, выделении столбцов — происходит событие класса TableColumnModelEvent, которое модель может отследить методом

addColumnModelListener(ColumnModelListener);

Заголовки столбцов таблицы JTableHeader

В начале таблицы можно вывести строку с именами столбцов. Она позволяет изменять ширину столбцов с помощью мыши в заданных для столбцов пределах.

Строка заголовков появляется автоматически, если таблица помещена в панель класса JScrollPane, даже если имена столбцов не были заданы. В таком случае в строку заголовков выводятся заглавные латинские буквы A, B, C и т. д., как определено в модели ячеек таблицы класса DefaultTableModel.

Строка заголовков — это объект класса JTableHeader из пакета j avax. swing. table. Данный объект хранит заголовок в модели столбцов типа TableColumnModel.

Экземпляр класса с моделью столбцов таблицы по умолчанию создается конструктором JTableHeader ( ). Второй конструктор, JTableHeader(TableColumnModel), создает объект с заданной моделью столбцов.

После создания строки заголовков ее надо связать с таблицей методом setTable (JTable).

Второй способ создания строки заголовков — получить ее экземпляр методом

getTableHeader( ) класса JTable.

Полученная строка заголовков — самостоятельный объект, который надо отдельно выводить на экран. Например, в листинге 13.4 заголовок таблицы выводится на "север", а

сама таблица- в "центр" размещения BorderLayout. Таким способом строку заголовков

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

Листинг 13.4. Отдельный вывод заголовка таблицы

import java.awt.*; import javax.swing.*; import javax.swing.table.*;

public class HeadTable extends JFrame{

HeadTable(){

super(" Сотрудники");

Vector data = new Vector();

Vector row = new Vector(); row.addElement("Иванов"); row.addElement(new Integer(1970)); row.addElement(new Boolean(false)); data.addElement(r); row = new Vector(); row.addElement("Петров"); row.addElement(new Integer(1980)); row.addElement(new Boolean(true)); data.addElement(r);

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных