Читаем Графические интерфейсы пользователя Java полностью

Интерфейс TableCellEditor расширяет интерфейс CellEditor и добавляет к его методам только один метод getTableCellEditorComponent, который возвращает компонент, пригодный для редактирования, например, объект класса JTextField, для заданной ячейки с индексами (row, column) и содержимым value.

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

Интерфейс TableCellEditor реализован классом DefaultCellEditor.

Конструкторы этого класса применяют в качестве конкретных редакторов компоненты JCheckBox, JComboBox и JTextField.

По умолчанию таблицы используют редактор с полем ввода JTextField.

Хотя в ячейках таблицы могут располагаться любые объекты, этот редактор обрабатывает только текст, получающийся применением метода toString () объекта.

Компонент JCheckBox используется для изображения в виде флажка логического содержимого ячейки типа boolean.

Этот редактор позволяет изменять истинность содержимого ячейки.

Компонент JСomboBox применяется для ввода в ячейку одного из нескольких значений, содержащихся в раскрывающемся списке.

В этом примере мы реализуем редактор ячеек таблицы на основе интерфейса TableCellEditor.

Этот редактор предназначен для редактирования таблицы, отображающей целые числа.

В конструкторе редактора мы присоединяем к компоненту редактирования, текстовому полю, слушатель, который при нажатии пользователем клавиши Enter, вызывает метод stopCellEditing редактора.

В методе getTableCellEditorComponent редактора, мы преобразуем целое число в строку, которую устанавливаем в текстовое поле.

В методе stopCellEditing редактора, мы делаем обратное, переводим строку в целое число.

И если это не удается – выбрасывается исключение.

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

Назначить этот редактор для таблицы мы можем методом setDefaultEditor, в котором указываем, для какого типа данных предназначен этот редактор.

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

Для заголовка таблицы также можно установить всплывающую подсказку, получив компонент JTableHeader и применив к нему метод setToolTipText.

Таблица JTable обеспечивает сортировку строк таблицы в порядке возрастания/убывания и отфильтровку строк (из модели данных таблицы), чтобы они отображались в представлении компонента.

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

Сортировка и фильтрация основаны на концепции объекта сортировщика строк, который сортирует (и фильтрует) строки.

Самый простой способ ввести сортировщик строк в компонент таблицы – это вызвать метод setAutoCreateRowSorter.

Передача значения true в метод setAutoCreateRowSorter заставляет таблицу JTable устанавливать новый экземпляр объекта TableRowSorter в качестве сортировщика строк при каждом изменении модели.

Таким образом, для сортировки строк таблицы вы просто вызываете метод setAutoCreateRowSorter, если вы не планируете настраивать сортировщик строк.

Сортировщик строк по умолчанию можно получить из таблицы методом getRowSorter.

Вы получите объект RowSorter, к которому вы можете присоединить слушатель сортировки.

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

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

Для этого создается список типа List, содержащий объекты вложенного класса RowSorter.SortKey.

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

Порядок сортировки, прямой или обратный, определяется константой ASCENDING или DESCENDING перечисления SortOrder.

Также программно отсортировать столбец вы можете с помощью метода toggleSortOrder, указав в качестве аргумента номер столбца.

Как уже говорилось ранее, перестановка строк при сортировке происходит только при выводе строк на экран.

Методами convertRowIndexToModel и convertRowIndexToView можно отследить соответствие порядкового номера строки в представлении и ее порядкового номера в модели данных.

Итак, сортировщик строк представлен абстрактным классом RowSorter.

Класс RowSorter расширен еще одним абстрактным классом DefaultRowSorter, рассчитанным на модель, в которой данные хранятся в виде таблицы.

Этот класс добавляет фильтрацию.

И наконец есть конкретная реализация сортировщика строк для модели данных TableModel – это класс TableRowSorter.

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

Сортировщик устанавливается для конкретной таблицы методом setRowSorter.

Сортировщик TableRowSorter использует объекты Comparator для сортировки строк.

Класс, реализующий этот интерфейс, должен предоставить метод compare, который определяет, как сопоставляются любые два объекта для сортировки.

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

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

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

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

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

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

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

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

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