Графический интерфейс пользователя. Обзор визуальных компонентов Swing

Содержание

Слайд 2

Контейнеры высшего уровня JWindow - окно без рамки JFrame - окно

Контейнеры высшего уровня

JWindow - окно без рамки
JFrame - окно с рамкой
JDialog

- диалоговое окно
JApplet - апплет
Слайд 3

Окно без рамки JWindow

Окно без рамки JWindow

Слайд 4

Окно с рамкой JFrame Является наследником JWindow Упрощенное закрытие окна setDefaultCloseOperation()

Окно с рамкой JFrame

Является наследником JWindow
Упрощенное закрытие окна setDefaultCloseOperation()
setUndecorated() - возможность

убрать рамку и элементы управления
Доступные слушатели событий:
WindowListener
WindowFocusListener
Слайд 5

Диалоговое окно JDialog Может быть модальным и немодальным Позволяет указать родительское

Диалоговое окно JDialog

Может быть модальным и немодальным
Позволяет указать родительское окно
Также имеет

метод setDefaultCloseOperation() для упрощения закрытия
Для удобства имеет перегруженный конструктор
Слайд 6

Менеджеры компоновки BorderLayout FlowLayout GridLayout GridBagLayout SpringLayout BoxLayout

Менеджеры компоновки

BorderLayout
FlowLayout
GridLayout
GridBagLayout
SpringLayout
BoxLayout

Слайд 7

Паттерн “Стратегия” Программа должна обеспечивать различные варианты алгоритма Нужно изменять поведение

Паттерн “Стратегия”

Программа должна обеспечивать различные варианты алгоритма
Нужно изменять поведение каждого экземпляра

класса
Необходимо изменять поведение объектов на стадии выполнения
Введение интерфейса позволяет классам-клиентам ничего не знать о классах, реализующих этот интерфейс и инкапсулирующих в себе конкретные алгоритмы
Слайд 8

java.awt.LayoutManager Учитывает следующие параметры компонентов Предпочтительный размер Минимальный размер Максимальный размер

java.awt.LayoutManager

Учитывает следующие параметры компонентов
Предпочтительный размер
Минимальный размер
Максимальный размер
Выравнивание по осям X и

Y
Границы контейнера
Слайд 9

Полярное расположение BorderLayout Является менеджером по умолчанию для JWindow, JFrame, JDialog

Полярное расположение BorderLayout

Является менеджером по умолчанию для JWindow, JFrame, JDialog
Использование: add(component,

область)
Виды областей:
BorderLayout.NORTH
BorderLayout.SOUTH
BorderLayout.WEST
BorderLayout.EAST
BorderLayout.CENTER
Слайд 10

Последовательное расположение FlowLayout Создает последовательное размещение объектов с указанным выравниванием и

Последовательное расположение FlowLayout

Создает последовательное размещение объектов с указанным выравниванием и заданными

между этими объектами интервалами.
В случае нехватки места переходит на следующую строку
Позволяет задавать расстояния между элементами по вертикали и горизонтали.
Позволяет указать горизонтальное выравнивание компонентов
Слайд 11

Табличное расположение GridLayout Разделяет контейнер на таблицу с ячейками одинакового размера.

Табличное расположение GridLayout

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

всегда выводятся на экран, как бы ни было велико или мало доступное пространство.
Объекты располагаются последовательно слева направо.
Слайд 12

java.awt.GridBagLayout Cоздает гибкое табличное размещение объектов, позволяя размещать один компонент в

java.awt.GridBagLayout

Cоздает гибкое табличное размещение объектов, позволяя размещать один компонент в нескольких

ячейках.
GridBagConstraints - определят параметры размещения отдельных компонент:
gridx и gridy - номер столбца и номер строки для ячейки
gridwidth и gridheight - количество ячеек, занимаемых добавляемым компонентом.
fill - стратегия распределения компоненту свободного пространства (GridBagConstraints.NONE, GridBagConstraints.BOTH, GridBagConstraints.HORIZONTAL, GridBagConstraints.VERTICAL )
Слайд 13

GridBagConstraints anchor - выравнивание компонента внутри отведенного для него пространства (GridBagConstraints.CENTER,

GridBagConstraints

anchor - выравнивание компонента внутри отведенного для него пространства (GridBagConstraints.CENTER, ..,

GridBagConstraints.SOUTHWEST )
weightx и weighty - стратегию изменения размеров компонента (значения от 0.0 до 1.0)
ipadx и ipady - позволяют указать, что размеры компонента необходимо увеличить на заданное количество пикселов
insets - позволяет задать для компонента отступы от краев выделенной ему области (класс Insets)
Слайд 14

SpringLayout С каждым компонентом ассоциируется особый информационный объект Spring, который позволяет

SpringLayout

С каждым компонентом ассоциируется особый информационный объект Spring, который позволяет задать

расстояние (в пикселах) между парой границ различных компонентов.
Границ у компонента четыре — это его северная, восточная, западная и южная стороны.
Позволяет задавать расстояние и между границами одного и того же компонента
По умолчанию все компоненты имеют предпочтительный размер
SpringLayout тщательно учитывает и два остальных размера, не делая компоненты меньше минимального и больше максимального размеров.
предназначен прежде всего для автоматизированного построения интерфейса
Слайд 15

Блочное расположение BoxLayout выкладывает компоненты в контейнер блоками: столбиком (по оси

Блочное расположение BoxLayout

выкладывает компоненты в контейнер блоками: столбиком (по оси Y)

или полоской (по оси X)
каждый отдельный компонент можно выравнивать по центру, по левому или по правому краям, а так же по верху или по низу
Расстояние между компонентами по умолчанию нулевое, но для его задания существуют это распорки (struts), заполнители (glues) и фиксированные области (rigid areas).
Имеется возможность создавать через методы класса Box
public static Box createHorizontalBox()
public static Box createVerticalBox()
Слайд 16

Надписи JLabel

Надписи JLabel

Слайд 17

Рамки

Рамки

Слайд 18

Рамки (продолжение)

Рамки (продолжение)

Слайд 19

Фабрика BorderFactory static Border createBevelBorder(int type) static CompoundBorder createCompoundBorder() static Border

Фабрика BorderFactory

static Border createBevelBorder(int type)
static CompoundBorder createCompoundBorder()
static Border createEmptyBorder()
static Border createEtchedBorder()
static

Border createLineBorder(Color color)
static TitledBorder createTitledBorder(String title)
static Border createSoftBevelBorder(int type)
static MatteBorder createMatteBorder(int top, int left, int bottom, int right, Color color)
Слайд 20

Элементы управления

Элементы управления

Слайд 21

Кнопки JButton

Кнопки JButton

Слайд 22

JButton

JButton

Слайд 23

Элементы управления с двумя состояниями Выключатели JToggleButton Группы элементов управления ButtonGroup Переключатели JRadioButton Флажки JCheckBox

Элементы управления с двумя состояниями

Выключатели JToggleButton
Группы элементов управления ButtonGroup
Переключатели JRadioButton
Флажки JCheckBox

Слайд 24

Обычные списки JList позволяют выводить на экран перечень некоторых элементов использует

Обычные списки JList

позволяют выводить на экран перечень некоторых элементов
использует две модели:


для формирования списка показываемых элементов (ListModel -> DefaultListModel)
для показа выделенных (ListSelectionModel -> DefaultListSelectionModel)
Позволяет настраивать внешний вид в широких пределах:
установкой свойств
ListCellRenderer (метод getListCellRendererComponent())
Слайд 25

Раскрывающиеся списки JComboBox служат для выбора одного из множества доступных вариантов

Раскрывающиеся списки JComboBox

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

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

Диапазоны значений Ползунки JSIider Индикаторы процесса JProgressBar Счетчики JSpinner

Диапазоны значений

Ползунки JSIider
Индикаторы процесса JProgressBar
Счетчики JSpinner

Слайд 27

Ползунки JSIider позволяет плавно изменять выбираемое в некотором диапазоне значение с

Ползунки JSIider

позволяет плавно изменять выбираемое в некотором диапазоне значение с помощью

специального регулятора,
требуется специальная модель BoundedRangeModel, хранящая информацию об ограниченном наборе данных. Данные в ней хранятся в числовом виде в четырех целых (int) числах.
минимальное значение (свойство с названием minimum),
максимальное значение (maximum),
текущее значение (value)
внутренний диапазон (extent)
Слайд 28

Индикаторы процесса JProgressBar демонстрируют пользователю, на каком этапе выполнения находится некий

Индикаторы процесса JProgressBar

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

BoundedRangeModel, предназначенную для хранения ограниченного диапазона чисел.
Слайд 29

Свойства JProgressBar

Свойства JProgressBar

Слайд 30

Счетчики JSpinner позволяют пользователю сделать выбор из набора альтернатив, которые он

Счетчики JSpinner

позволяют пользователю сделать выбор из набора альтернатив, которые он в

поиске нужного значения может «прокручивать» в любую сторону.
Использует модель SpinnerModel, которая позволяет узнать текущее значение счетчика, следующее и предыдущее значения, сменить текущее значение новым, а также поддерживает списки слушателей ChangeListener, которые оповещаются, когда меняется текущее значение модели.
Позволяет организовать выбор дат с использованием SpinnerDateModel.
Слайд 31

Управление пространством Панель с вкладками JTabbedPane Разделяемая панель JSplitPane Панель прокрутки JScrollPane

Управление пространством

Панель с вкладками JTabbedPane
Разделяемая панель JSplitPane
Панель прокрутки JScrollPane

Слайд 32

Панель с вкладками JTabbedPane позволяет выводить на экран вкладки (tabs) вкладка

Панель с вкладками JTabbedPane

позволяет выводить на экран вкладки (tabs)
вкладка добавляется при

вызове метода add() или addTab()
Слайд 33

Разделяемая панель JSplitPane

Разделяемая панель JSplitPane

Слайд 34

Панель прокрутки JScrollPane позволяет наделить компонент (обычно большого размера) возможностью прокрутки

Панель прокрутки JScrollPane

позволяет наделить компонент (обычно большого размера) возможностью прокрутки
Позволяет задавать

политику появления скроллов:
по вертикали
VERTICAL_SCROLLBAR_AS_NEEDED
VERTICAL_SCROLLBAR_NEVER
VERTICAL_SCROLLBAR_ALWAYS
по горизонтали
HORIZONTAL_SCROLLBAR_AS_NEEDED
HORIZONTAL_SCROLLBAR_NEVER
HORIZONTAL_SCROLLBAR_ALWAYS
Слайд 35

Текстовые компоненты Текстовые поля Многострочное поле JTextArea Компонент JFormattedTextField

Текстовые компоненты

Текстовые поля
Многострочное поле JTextArea
Компонент JFormattedTextField

Слайд 36

Текстовые поля Имеет два вида - JTextField и JPasswordField

Текстовые поля

Имеет два вида - JTextField и JPasswordField

Слайд 37

Многострочное поле JTextArea

Многострочное поле JTextArea

Слайд 38

Форматированный вывод — компонент JFormattedTextField позволяет выводить данные согласно специальным текстовым

Форматированный вывод — компонент JFormattedTextField

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

маскам
ограничивает ввод пользователя, разрешая тому вводить данные только в соответствии с заданным в поле форматом.
Имеет фоматирующий объект, наследующий абстрактный внутренний класс AbstractFonnatter.
Стандартные форматирующие объекты
MaskFormatter
DateFormatter
NumberFormatter
Слайд 39

JTable Дает возможность с легкостью выводить двухмерную информацию Позволяет настраивать и

JTable

Дает возможность с легкостью выводить двухмерную информацию
Позволяет настраивать и сортировать данные
Позволяет

управлять заголовками таблицы
Имеет ряд вспомогательных классов из пакета javax.swing.table
Оперирует данными с помощью модели tableModel
Слайд 40

TableModel

TableModel

Слайд 41

Литература K.Arulkumaran, A.Sivayini. Java/J2EE Job Interview Companion Портянкин И. Swing. Эффективные

Литература

K.Arulkumaran, A.Sivayini. Java/J2EE Job Interview Companion
Портянкин И. Swing. Эффективные пользовательские интерфейсы
Java™

Platform, Standard Edition 7 API Specification
Слайд 42

Домашнее задание Разработать приложение, которое выводит на экран таблицу с книгами.

Домашнее задание

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

столбцов таблицы должно быть не менее 5, например:
1. Название;
2. Автор;
3. Год выпуска;
4. Издательство
5. Обложка (картинка). Приложение должно хранить данные в файле в виде (через разделители): Название%Автор%1999%Издательство%1.jpg. Приложение должно быть разделено визуально на 2 части: в верхней части должна быть таблица, а в нижней поля, через которые осуществляется добавление строки. В приложении должно быть предусмотрено меню (загрузка из файла, сохранение, выход и т.д.).