Слайд 1Лекция №11. Java. Разработка графического интерфейса
Слайд 2Содержание
AWT — Abstract Window Toolkit
Swing
Слайд 3Реализации графического пользовательского интерфейса
В Java существует две реализации графического пользовательского
интерфейса:
java.awt
javax.swing
Слайд 4AWT — Abstract Window Toolkit
java.awt - набор классов-оберток компонентов GUI
операционной системы, на которой выполняется Java-приложение.
Компоненты AWT реализованы платформозависимым способом
на каждой реализации java машины. При этом для пользователя существует иерархия оберток, обладающих разной реализацией графического представления на разных архитектурах.
Слайд 5Компоненты AWT
Компонент (java.awt.Component) — базовый класс, определяющий отображение на экране
и поведение каждого элемента интерфейса при взаимодействии с пользователем. Задает
размер, цвет, отступы, область отображения и порождает основные события. Класс лежит в основе иерархии.
Для компонентов можно установить множество разных атрибутов, таких как цвет, шрифт и множество других.
Например, для установки цвета фона и переднего плана используются следующие методы:
Слайд 6Для определения цвета используется класс java.awt.Color, в котором цвет можно
задать либо при помощи таблицы RGB, либо при помощи переменных
класса.
Для установки шрифта используется метод setFont(Font). Все надписи, принадлежащие данному компоненту будут написаны этим шрифтом. Для определения шрифта используется класс java.awt.Font, в котором шрифт определяется через 3 параметра:
имя (Helvetica),
стиль (BOLD)
высота (12).
Слайд 8Возможность включать изображения в программу реализуется через потомков абстрактного класса
Image.
Кнопка (Button)
Простейший компонент пользовательского интерфейса, применяемый практически во всех приложениях.
Для создания нового компонента необходимо создать объект этого класса, в приведенном примере в качестве аргумента передается строка-заголовок. При создании новой кнопки можно использовать конструктор без аргументов.
Слайд 9
Переключатели (Checkbox)
Данный компонент позволяет визуально устанавливать значения on или off
для переменной. При использовании нескольких переключателей, несколько переменных могут принимать
значение on.
При создании нового объекта необходимо задать как строку название, так и его значение. Необходимо помнить о том, что при использовании в качестве параметра объекта типа CheckboxGroup по крайней мере хотя бы один CheckBox должен быть в состоянии on.
Слайд 10Группы переключателей (CheckboxGroup)
Для использования этого компонента необходимо наличие n-числа переключателей.
Алгоритм
создания группы переключателей следующий:
инициализация нового объекта типа CheckboxGroup
добавление
к нему переключателей при помощи метода add().
Слайд 11Списки (List)
Списком называется набор элементов, один или несколько из которых
могут быть выбраны из создаваемого окна с прокруткой. Возможно использование
пустого конструктора.
Для создания списка необходимо:
инициализация объекта типа List (в конструкторе задаем число видимых строк и атрибут, определяющий возможен ли выбор нескольких строк одновременно);
добавление строк методом add().
Метод setMultipleMode(boolean) определяет возможность выбора
множества строк
Слайд 12Выпадающие списки (Choice)
Создается аналогично обычному списку, только при его использовании
можно всегда выбирать только одну строку.
В данном классе используется только
один пустой конструктор, который создает объект этого класса, для полноценной работы которого необходимо добавление n-числа строк, что реализуется при помощи метода add().
Слайд 13Надписи (Label)
Позволяет размещать статические текстовые надписи. При создании объекта можно
использовать пустой конструктор, но тогда саму надпись необходимо задавать при
помощи метода setText(String).
Контейнеры
Контейнер (java.awt.Container) - компонент, способный содержать в себе другие компоненты, и управлять их размещением и, возможно, размерами при помощи менеджеров компоновки.
Слайд 14Панель (Panel)
Работа с данным компонентом не отличается от работы с
другими компонентами класса java.awt, за единственным исключением, что для панели
можно установить менеджер компоновки при помощи метода setLayout(). Добавление компонентов осуществляется методом add().
В отличии от других компонентов панель не прорисовывается, то есть не имеет внешнего вида.
Скроллирующие панели (ScrollPane)
Контейнер ScrollPane отображает ограниченный участок дочернего элемента и снабжен горизонтальными и вертикальными полосами прокрутки для его просмотра в окне просмотра.
Необходимо создать его и добавить дочерний элемент. Отличие от обычного контейнера:
поддерживает лишь один дочерний элемент (как правило, используется панель со множеством компонент);
не предусмотрено использование менеджера компоновки
необходимо задавать размеры с помощью метода setSize()
Слайд 15Окно приложения (Frame)
Frame — контейнер, формирующий окна приложения с заголовком
окна. Недоступен в апплетах.
Фрейм позволяет добавлять к себе меню и
обрабатывать события интерфейса пользователя, связанные с активированием, сворачиванием и закрытием окна.
Слайд 16Менеджеры компоновки
Менеджер компоновки является незаменимым инструментом при использовании более одного
компонента. Пакет java.awt включает следующие менеджеры:
FlowLayout - менеджер, используемый по
умолчанию, размещает компоненты последовательно в строку. Его использование оправдано в том случае, когда известны точные размеры компонент.
BorderLayout — создает так называемое полярное расположение: разбивает панель на 5 зон (South, North, Center, West, East). Он учитывает разницу в размерах отдельных компонентов и пытается максимально использовать пространство контейнеров.
GridLayout - создает решетку, состоящую из прямоугольников одинакового размера, в каждом из которых располагается один компонент.
CardLayout - предназначен для последовательной визуализации различных панелей на одной основный.
GridBagLayout - данный менеджер является наиболее сложным. Он позволят реализовывать сложный интерфейс, в котором контейнер содержит много компонентов различных размеров, которые должны находиться в одном и том же заданном положении относительно других.
Слайд 17Меню (Menu)
Меню - компонент пользовательского интерфейса, позволяющий создавать в приложениях
главное меню. Меню в java.awt неразрывно связано с содержащим ее
фреймом.
Процесс подсоединения меню к приложению состоит из нескольких частей:
Создание строки меню
MenuBar mb = new MenuBar();
Создание нового меню на строку меню
Menu m = new Menu("File");
Добавление опции в меню и присваивание ей имени
m.add(new MenuItem ("Load")
Добавление меню к фрейму
Frame f = new Frame("окно");
f.setMenuBar(mb);
Слайд 18Модель обработки событий
Компоненты AWT генерируют события в соответствии с воздействиями
пользователя на графический интерфейс. Другие компоненты регистрируются для прослушивания этих
событий и реагируют соответствующим образом.
Существует 4 составные части модели обработки событий.
Компонент-источник события
Компоненты-слушатели или приемники события
Интерфейс слушателя
Класс события.
Слайд 19Источник события
Источником события является компонент, генерирующий событие и регистрирующий заинтересованные
в прослушивании данного события компоненты.
Источник события оповещает слушателя путем вызова
специального метода интерфейса слушателя (actionPerformed) и передачи ему объекта события (ActionEvent). Все слушатели событий определенного события должны реализовывать соответствующий интерфейс.
Слайд 20Слушатель события
Слушатель события — компонент, регистрирующийся для прослушивания события у
источника и реагирующий на него. Слушатель может события обрабатывать внутри
собственного класса.
Интерфейс слушателя
Интерфейс слушателя — вспомогательный интерфейс, который обязаны реализовывать все слушатели события для возможности добавления себя в список у источника события.
Интерфейс определяет методы, которые будут вызваны в момент доставки события слушателю. Все интерфейсы слушателей являются расширением класса java.util.EventListener. По установленному соглашению, методам слушателей может быть передан один единственный аргумент, который соответствует данному слушателю.
Слайд 21Событие
Событие пользовательского интерфейса — потомок класса java.awt.AWTEvent, предназначенный для передачи
информации от источника события к слушателю.
События пакета AWT вместе со
слушателями находятся в пакете java.awt.event.
В событии должна содержаться вся информация, необходимая программе для формирования реакции на данное событие.
Слайд 22Класс AWTEventMulticaster
AWTEventMulticaster — класс, реализующий эффективную и потоко-безопасную диспетчеризацию событий
для событий AWT.
Основные события AWT
Слайд 24JFC - Java Foundation Classes
JFC — набор базовых библиотек, предназначенный
для построения эффективных графических приложений.
Состоит из:
AWT - Содержит компоненты AWT
1.1
Java 2D - Обеспечивает расширенные возможности создания и обработки изображений.
Accessibility - Реализует вспомогательные технологии, такие как экранное считывание, обработка речи, и т.д.
Drag and Drop - Дает возможность взаимодействия приложений на языке Java с другими приложениями с использованием механизма Drag and Drop.
Swing - расширяет набор компонентов AWT 1.1 путем добавления легковесных компонентов, реализующих архитектуру MVC, в отличие от компонентов, основанных на использовании экспертов операционной системы.
Слайд 252. Swing
Набор компонентов Swing - это разработанный на Java платформо-независимый
набор компонентов графического пользовательского интерфейса.
Особенности Swing-компонентов:
являются "легковесными", т.е. не используют
средств операционной системы.
реализуют архитектуру PL&F (Pluggable Look and Feel), позволяя легко изменять вид и поведение работающего приложения.
реализуют компонентную технологию JavaBeans, и могут использоваться с любыми визуальными средствами разработки, поддерживающими работу с Beans-компонентами.
Слайд 26Архитектура MVC и модель Swing
MVC (Model-View-Controller) - технология создания элементов
пользовательского интерфейса, основанная на взаимодействии компонентов:
Model (модель) - логическое представление
данных
View (представление) - визуальное представление данных
Controller (контроллер) - обрабатывает входные данные и передает их изменения в модель.
Слайд 27В Swing контроллер и представление объединяются в общий компонент под
названием делегат (delegate).
Компоненты Swing в любой момент времени связаны с
определенной моделью и с определенным делегатом, специфическими для данного компонента. Модели и делегаты реализуют соответствующие интерфейсы.
Слайд 29Составные части окна
В модели Swing внутренняя часть окна представляет собой
корневую панель JRootPane, которая состоит из:
прозрачной панели (glass pane)
слоистой панели
(layered pane).
Прозрачная панель невидима, и используется для отображения подсказок и выплывающих меню.
Слоистая панель состоит из двух компонентов - линейки меню и панели содержимого (content pane).
Компоновка осуществляется на панели содержимого:
При помещении компонента на слоистую панель можно указывать номер слоя, на который следует поместить компонент:
Слайд 30Класс JComponent
Является базовым классом почти для всех Swing-компонентов пользовательского интерфейса
(J-классов). Swing-компоненты пользовательского интерфейса наследуют от класса JComponent следующие свойства:
реализация
PL&F
расширяемость
обработка событий клавиатуры
прорисовка границ
масштабируемость
отображение подсказок
автопрокрутка
возможность отладки графики
поддержка вспомогательных технологий
многоязыковая поддержка
Слайд 31Класс JPanel
Является легковесным объектом, представляющим панель со встроенной поддержкой двойной
буферизации.
Интерфейс Icon описывает изображения фиксированного размера. Класс ImageIcon реализует интерфейс
Icon для объекта типа java.awt.Image.
Интерфейс Icon и класс ImageIcon
Слайд 32Класс JLabel
Реализует однострочную текстовую метку с дополнительными возможностями:
наличие изображения;
возможность изменения
взаимного расположения текста и изображения.
Является реализацией кнопки с возможностью включения
изображения. Фон кнопки должен совпадать с фоном контейнера, в котором она находится.
Класс JButton
Слайд 33Класс JCheckBox
Соответствует объекту CheckBox, не входящему в группу. Можно задавать
собственные изображения для выбранного и невыбранного состояния.
Соответствует объекту CheckBox, входящему
в группу, так, что в данный момент времени может быть выбран только один из них. Группа объектов задается с помощью ButtonGroup
Класс обеспечивает основные функции простого текстового редактора. Основными подклассами JTextComponent являются JTextField, JTextArea, JTextPane.
Класс JRadioButton
Класс JTextComponent
Слайд 34Класс JComboBox
Представляет собой выпадающий список с возможностью выбора и
редактирования.
Реализует список
элементов.
Класс JList
Слайд 35Бордюры (Border)
Рисование границ вокруг компонентов (бордюров) обеспечивается с помощью интерфейса
Border. Border требует реализации следующих методов:
В пакет Swing входит 9
классов для рисования бордюров
Слайд 36Классы меню
Классы, обеспечивающие работу с меню (JCheckBoxMenuItem, JMenuItem, JRadioButtonMenuItem, JMenu,
JMenuBar, JSeparator), являются подклассами компонента JComponent. Это позволяет в отличие
от AWT добавить меню в любое место программы, к люб.ому контейнеру
Позволяет связать выпадающее меню с любым компонентом
Класс JPopupMenu