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

По умолчанию JFileChooser показывает все файлы в выбранном каталоге.

Ограничить отображение отдельными типами файлов, можно с помощью фильтра файлов.

Фильтр файлов представлен абстрактным классом FileFilter.

Можно напрямую реализовать этот класс, определив его метод accept, принимает ли фильтр этот файл, и метод getDescription, описание фильтра.

Или можно использовать готовую реализацию – класс FileNameExtensionFilter.

Фильтр FileNameExtensionFilter создается с помощью конструктора, в котором указывается отображаемое описание фильтра и набор допустимых расширений файлов.

Полученный фильтр устанавливается с помощью метода addChoosableFileFilter.

Можно создать несколько фильтров и добавить их в JFileChooser.

Тогда пользователь сможет выбирать фильтр в выпадающем списке.

По умолчанию в JFileChooser добавляется фильтр All Files.

Чтобы его убрать, используется метод setAcceptAllFileFilterUsed (false).

В компонент JFileChooser можно добавить Swing компонент с помощью метода setAccessory.

Например, окно предварительного просмотра выбранного файла.

В этом примере мы создаем класс, расширяющий класс JComponent, в котором мы присоединяем слушатель изменения свойства к JFileChooser.

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

<p>JTable</p>

Компонент JTable обеспечивает отображение таблицы данных, при необходимости позволяя пользователю редактировать данные.

Компонент JTable использует модель данных таблицы TableModel для управления фактическими данными таблицы, модель TableColumnModel, содержащую список столбцов таблицы, и модель выбора строк таблицы ListSelectionModel.

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

Видно, что архитектура компонента JTable довольно сложная.

Это сделано для максимального абстрагирования, чтобы пользователи Swing могли легко получить доступ, изменить и расширить все функциональные возможности.

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

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

Конструктор JTable (int rows, int columns) формирует пустую редактируемую таблицу с заданным числом строк и столбцов с моделью данных по умолчанию, которая предполагает хранить в таблице объекты типа Object в виде вектора типа Vector, состоящего из векторов.

Конструктор JTable (Object [] [] data, Object [] colNames) создает таблицу, заполненную объектами data.

Параметр colNames содержит имена столбцов таблицы.

Все строки массива data должны содержать столько же элементов, сколько существует в массиве colNames.

Конструктор JTable (Vector data, Vector colNames) делает то же самое, но параметры заданы векторами.

Преимущество этих конструкторов заключается в том, что они просты в использовании.

Однако эти конструкторы также имеют недостатки.

Они автоматически делают каждую ячейку доступной для редактирования.

Они обрабатывают все типы данных одинаково, как строки.

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

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

Кроме-того, при изменении данных, придется заново создавать таблицу, с новыми массивами.

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

Как уже было сказано, самый простой способ создать таблицу – это использовать конструктор на основе массивов данных, указав напрямую данные и заголовки столбцов.

Надо заметить, что заголовки столбцов появляются на экране, только если таблица заключена в панель JScrollPane.

Если при этом у столбцов не заданы имена, то они помечаются буквами A, B, C и т. д., как принято в электронных таблицах.

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

При вызове метода setFillsViewportHeight (true), таблица использует всю высоту контейнера, даже если таблица не имеет достаточного количества строк для использования всего вертикального пространства.

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

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

Столбец таблицы получается из модели TableColumnModel, которая получается методом getColumnModel.

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

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

Режим выбора устанавливается методом setSelectionMode на основе констант MULTIPLE_INTERVAL_SELECTION, SINGLE_INTERVAL_SELECTION, и SINGLE_SELECTION.

Обработать выбор пользователя, можно присоединив слушателя к модели выбора ListSelectionModel.

Эта модель получается методом getSelectionModel для таблицы.

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

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

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

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

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

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

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

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

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