Слайд 2
![Контейнеры высшего уровня JWindow - окно без рамки JFrame -](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-1.jpg)
Контейнеры высшего уровня
JWindow - окно без рамки
JFrame - окно с рамкой
JDialog
- диалоговое окно
JApplet - апплет
Слайд 3
![Окно без рамки JWindow](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-2.jpg)
Слайд 4
![Окно с рамкой JFrame Является наследником JWindow Упрощенное закрытие окна](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-3.jpg)
Окно с рамкой JFrame
Является наследником JWindow
Упрощенное закрытие окна setDefaultCloseOperation()
setUndecorated() - возможность
убрать рамку и элементы управления
Доступные слушатели событий:
WindowListener
WindowFocusListener
Слайд 5
![Диалоговое окно JDialog Может быть модальным и немодальным Позволяет указать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-4.jpg)
Диалоговое окно JDialog
Может быть модальным и немодальным
Позволяет указать родительское окно
Также имеет
метод setDefaultCloseOperation() для упрощения закрытия
Для удобства имеет перегруженный конструктор
Слайд 6
![Менеджеры компоновки BorderLayout FlowLayout GridLayout GridBagLayout SpringLayout BoxLayout](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-5.jpg)
Менеджеры компоновки
BorderLayout
FlowLayout
GridLayout
GridBagLayout
SpringLayout
BoxLayout
Слайд 7
![Паттерн “Стратегия” Программа должна обеспечивать различные варианты алгоритма Нужно изменять](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-6.jpg)
Паттерн “Стратегия”
Программа должна обеспечивать различные варианты алгоритма
Нужно изменять поведение каждого экземпляра
класса
Необходимо изменять поведение объектов на стадии выполнения
Введение интерфейса позволяет классам-клиентам ничего не знать о классах, реализующих этот интерфейс и инкапсулирующих в себе конкретные алгоритмы
Слайд 8
![java.awt.LayoutManager Учитывает следующие параметры компонентов Предпочтительный размер Минимальный размер Максимальный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-7.jpg)
java.awt.LayoutManager
Учитывает следующие параметры компонентов
Предпочтительный размер
Минимальный размер
Максимальный размер
Выравнивание по осям X и
Y
Границы контейнера
Слайд 9
![Полярное расположение BorderLayout Является менеджером по умолчанию для JWindow, JFrame,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-8.jpg)
Полярное расположение BorderLayout
Является менеджером по умолчанию для JWindow, JFrame, JDialog
Использование: add(component,
область)
Виды областей:
BorderLayout.NORTH
BorderLayout.SOUTH
BorderLayout.WEST
BorderLayout.EAST
BorderLayout.CENTER
Слайд 10
![Последовательное расположение FlowLayout Создает последовательное размещение объектов с указанным выравниванием](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-9.jpg)
Последовательное расположение FlowLayout
Создает последовательное размещение объектов с указанным выравниванием и заданными
между этими объектами интервалами.
В случае нехватки места переходит на следующую строку
Позволяет задавать расстояния между элементами по вертикали и горизонтали.
Позволяет указать горизонтальное выравнивание компонентов
Слайд 11
![Табличное расположение GridLayout Разделяет контейнер на таблицу с ячейками одинакового](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-10.jpg)
Табличное расположение GridLayout
Разделяет контейнер на таблицу с ячейками одинакового размера.
Все компоненты
всегда выводятся на экран, как бы ни было велико или мало доступное пространство.
Объекты располагаются последовательно слева направо.
Слайд 12
![java.awt.GridBagLayout Cоздает гибкое табличное размещение объектов, позволяя размещать один компонент](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-11.jpg)
java.awt.GridBagLayout
Cоздает гибкое табличное размещение объектов, позволяя размещать один компонент в нескольких
ячейках.
GridBagConstraints - определят параметры размещения отдельных компонент:
gridx и gridy - номер столбца и номер строки для ячейки
gridwidth и gridheight - количество ячеек, занимаемых добавляемым компонентом.
fill - стратегия распределения компоненту свободного пространства (GridBagConstraints.NONE, GridBagConstraints.BOTH, GridBagConstraints.HORIZONTAL, GridBagConstraints.VERTICAL )
Слайд 13
![GridBagConstraints anchor - выравнивание компонента внутри отведенного для него пространства](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-12.jpg)
GridBagConstraints
anchor - выравнивание компонента внутри отведенного для него пространства (GridBagConstraints.CENTER, ..,
GridBagConstraints.SOUTHWEST )
weightx и weighty - стратегию изменения размеров компонента (значения от 0.0 до 1.0)
ipadx и ipady - позволяют указать, что размеры компонента необходимо увеличить на заданное количество пикселов
insets - позволяет задать для компонента отступы от краев выделенной ему области (класс Insets)
Слайд 14
![SpringLayout С каждым компонентом ассоциируется особый информационный объект Spring, который](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-13.jpg)
SpringLayout
С каждым компонентом ассоциируется особый информационный объект Spring, который позволяет задать
расстояние (в пикселах) между парой границ различных компонентов.
Границ у компонента четыре — это его северная, восточная, западная и южная стороны.
Позволяет задавать расстояние и между границами одного и того же компонента
По умолчанию все компоненты имеют предпочтительный размер
SpringLayout тщательно учитывает и два остальных размера, не делая компоненты меньше минимального и больше максимального размеров.
предназначен прежде всего для автоматизированного построения интерфейса
Слайд 15
![Блочное расположение BoxLayout выкладывает компоненты в контейнер блоками: столбиком (по](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-14.jpg)
Блочное расположение BoxLayout
выкладывает компоненты в контейнер блоками: столбиком (по оси Y)
или полоской (по оси X)
каждый отдельный компонент можно выравнивать по центру, по левому или по правому краям, а так же по верху или по низу
Расстояние между компонентами по умолчанию нулевое, но для его задания существуют это распорки (struts), заполнители (glues) и фиксированные области (rigid areas).
Имеется возможность создавать через методы класса Box
public static Box createHorizontalBox()
public static Box createVerticalBox()
Слайд 16
![Надписи JLabel](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-15.jpg)
Слайд 17
![Рамки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-16.jpg)
Слайд 18
![Рамки (продолжение)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-17.jpg)
Слайд 19
![Фабрика BorderFactory static Border createBevelBorder(int type) static CompoundBorder createCompoundBorder() static](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-18.jpg)
Фабрика 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
![Элементы управления](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-19.jpg)
Слайд 21
![Кнопки JButton](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-20.jpg)
Слайд 22
![JButton](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-21.jpg)
Слайд 23
![Элементы управления с двумя состояниями Выключатели JToggleButton Группы элементов управления ButtonGroup Переключатели JRadioButton Флажки JCheckBox](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-22.jpg)
Элементы управления с двумя состояниями
Выключатели JToggleButton
Группы элементов управления ButtonGroup
Переключатели JRadioButton
Флажки JCheckBox
Слайд 24
![Обычные списки JList позволяют выводить на экран перечень некоторых элементов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-23.jpg)
Обычные списки JList
позволяют выводить на экран перечень некоторых элементов
использует две модели:
для формирования списка показываемых элементов (ListModel -> DefaultListModel)
для показа выделенных (ListSelectionModel -> DefaultListSelectionModel)
Позволяет настраивать внешний вид в широких пределах:
установкой свойств
ListCellRenderer (метод getListCellRendererComponent())
Слайд 25
![Раскрывающиеся списки JComboBox служат для выбора одного из множества доступных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-24.jpg)
Раскрывающиеся списки JComboBox
служат для выбора одного из множества доступных вариантов
виден только
сам выбранный элемент
Список возможных альтернатив выводится в специальном всплывающем меню, которое после выбора скрывается
допускают редактирование текущего элемента
обладает встроенной возможностью поиска элементов с клавиатуры
требует только одну модель ComboBoxModel
Слайд 26
![Диапазоны значений Ползунки JSIider Индикаторы процесса JProgressBar Счетчики JSpinner](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-25.jpg)
Диапазоны значений
Ползунки JSIider
Индикаторы процесса JProgressBar
Счетчики JSpinner
Слайд 27
![Ползунки JSIider позволяет плавно изменять выбираемое в некотором диапазоне значение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-26.jpg)
Ползунки JSIider
позволяет плавно изменять выбираемое в некотором диапазоне значение с помощью
специального регулятора,
требуется специальная модель BoundedRangeModel, хранящая информацию об ограниченном наборе данных. Данные в ней хранятся в числовом виде в четырех целых (int) числах.
минимальное значение (свойство с названием minimum),
максимальное значение (maximum),
текущее значение (value)
внутренний диапазон (extent)
Слайд 28
![Индикаторы процесса JProgressBar демонстрируют пользователю, на каком этапе выполнения находится](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-27.jpg)
Индикаторы процесса JProgressBar
демонстрируют пользователю, на каком этапе выполнения находится некий процесс.
использует
BoundedRangeModel, предназначенную для хранения ограниченного диапазона чисел.
Слайд 29
![Свойства JProgressBar](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-28.jpg)
Слайд 30
![Счетчики JSpinner позволяют пользователю сделать выбор из набора альтернатив, которые](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-29.jpg)
Счетчики JSpinner
позволяют пользователю сделать выбор из набора альтернатив, которые он в
поиске нужного значения может «прокручивать» в любую сторону.
Использует модель SpinnerModel, которая позволяет узнать текущее значение счетчика, следующее и предыдущее значения, сменить текущее значение новым, а также поддерживает списки слушателей ChangeListener, которые оповещаются, когда меняется текущее значение модели.
Позволяет организовать выбор дат с использованием SpinnerDateModel.
Слайд 31
![Управление пространством Панель с вкладками JTabbedPane Разделяемая панель JSplitPane Панель прокрутки JScrollPane](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-30.jpg)
Управление пространством
Панель с вкладками JTabbedPane
Разделяемая панель JSplitPane
Панель прокрутки JScrollPane
Слайд 32
![Панель с вкладками JTabbedPane позволяет выводить на экран вкладки (tabs)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-31.jpg)
Панель с вкладками JTabbedPane
позволяет выводить на экран вкладки (tabs)
вкладка добавляется при
вызове метода add() или addTab()
Слайд 33
![Разделяемая панель JSplitPane](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-32.jpg)
Разделяемая панель JSplitPane
Слайд 34
![Панель прокрутки JScrollPane позволяет наделить компонент (обычно большого размера) возможностью](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-33.jpg)
Панель прокрутки JScrollPane
позволяет наделить компонент (обычно большого размера) возможностью прокрутки
Позволяет задавать
политику появления скроллов:
по вертикали
VERTICAL_SCROLLBAR_AS_NEEDED
VERTICAL_SCROLLBAR_NEVER
VERTICAL_SCROLLBAR_ALWAYS
по горизонтали
HORIZONTAL_SCROLLBAR_AS_NEEDED
HORIZONTAL_SCROLLBAR_NEVER
HORIZONTAL_SCROLLBAR_ALWAYS
Слайд 35
![Текстовые компоненты Текстовые поля Многострочное поле JTextArea Компонент JFormattedTextField](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-34.jpg)
Текстовые компоненты
Текстовые поля
Многострочное поле JTextArea
Компонент JFormattedTextField
Слайд 36
![Текстовые поля Имеет два вида - JTextField и JPasswordField](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-35.jpg)
Текстовые поля
Имеет два вида - JTextField и JPasswordField
Слайд 37
![Многострочное поле JTextArea](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-36.jpg)
Многострочное поле JTextArea
Слайд 38
![Форматированный вывод — компонент JFormattedTextField позволяет выводить данные согласно специальным](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-37.jpg)
Форматированный вывод — компонент
JFormattedTextField
позволяет выводить данные согласно специальным текстовым форматам и
маскам
ограничивает ввод пользователя, разрешая тому вводить данные только в соответствии с заданным в поле форматом.
Имеет фоматирующий объект, наследующий абстрактный внутренний класс AbstractFonnatter.
Стандартные форматирующие объекты
MaskFormatter
DateFormatter
NumberFormatter
Слайд 39
![JTable Дает возможность с легкостью выводить двухмерную информацию Позволяет настраивать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-38.jpg)
JTable
Дает возможность с легкостью выводить двухмерную информацию
Позволяет настраивать и сортировать данные
Позволяет
управлять заголовками таблицы
Имеет ряд вспомогательных классов из пакета javax.swing.table
Оперирует данными с помощью модели tableModel
Слайд 40
![TableModel](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-39.jpg)
Слайд 41
![Литература K.Arulkumaran, A.Sivayini. Java/J2EE Job Interview Companion Портянкин И. Swing.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-40.jpg)
Литература
K.Arulkumaran, A.Sivayini. Java/J2EE Job Interview Companion
Портянкин И. Swing. Эффективные пользовательские интерфейсы
Java™
Platform, Standard Edition 7 API Specification
Слайд 42
![Домашнее задание Разработать приложение, которое выводит на экран таблицу с](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/105726/slide-41.jpg)
Домашнее задание
Разработать приложение, которое выводит на экран таблицу с книгами. Количество
столбцов таблицы должно быть не менее 5, например:
1. Название;
2. Автор;
3. Год выпуска;
4. Издательство
5. Обложка (картинка).
Приложение должно хранить данные в файле в виде (через разделители):
Название%Автор%1999%Издательство%1.jpg.
Приложение должно быть разделено визуально на 2 части: в верхней части должна быть таблица, а в нижней поля, через которые осуществляется добавление строки.
В приложении должно быть предусмотрено меню (загрузка из файла, сохранение, выход и т.д.).