GUI Разработка
Как правило, мы используем компоненты и события, которые представляют предопределенные классы в библиотеке классов Java. Поэтому, чтобы создать программу Java, которая использует графический интерфейс мы должны:
•создать экземпляры объектов и настроить необходимые компоненты
•реализовать классы слушателя для любых событий, мы заботимся
•установить связь между слушателей и компонентами, которые генерируют соответствующие события
Давайте теперь рассмотрим некоторые новые компоненты и посмотреть, как все это происходит вместе.
Структура GUI java
Концепция MVC
Приложение должно состоять из 3-х фундаментальных логических частей:
•controller (контроллер),
•model (модель),
•view (представление/отображение).
Блок controller – преобразует действия пользователя (в данном контексте, пользователь – не обязательно человек) во входящие параметры для
Model и передает управление в Model. Блок model – реализует всю логику работы программы и подготавливает данные для отображения. Блок view – визуализирует результаты работы программы.
Каждое действие пользователя всегда запускает цепочку controller- >model->view.
Структура GUI java
Окно JFrame
Каждая GUI-программа запускается в окне и по ходу работы может открывать несколько дополнительных окон.
Вбиблиотеке Swing описан класс JFrame, представляющий собой окно
срамкой и строкой заголовка (с кнопками «Свернуть», «Во весь экран» и «Закрыть»). Оно может изменять размеры и перемещаться по экрану.
Панель содержимого
Напрямую в окне элементы управления не размещаются. Для этого служит панель содержимого, занимающая все пространство окна*.
Обратиться к этой панели можно методом getContentPane() класса JFrame. С помощью метода add(Component component) можно добавить на нее любой элемент управления.
Класс Container (контейнер)
Элементы, которые содержат другие элементы, называются контейнерами. Все они являются потомками класса Container и наследуют от него ряд полезных методов:
• add(Component component) — добавляет в контейнер элемент component;
•remove(Component component) — удаляет из контейнера элемент component;
•removeAll() — удаляет все элементы контейнера;
•getComponentCount() — возвращает число элементов контейнера.
Класс JPanel (панель)
Панель JPanel — это элемент управления, представляющий собой прямоугольное пространство, на котором можно размещать другие элементы. Элементы добавляются и удаляются методами, унаследованными от класса Container.
На самом деле у каждой панели есть так называемый менеджер размещения, который определяет стратегию взаимного расположения элементов, добавляемых на панель. Его можно изменить методом setLayout(LayoutManager manager). Но чтобы передать в этот метод нужный параметр, необходимо знать, какими бывают менеджеры.
GUI проектирование
Мы должны помнить, что цель программного обеспечения, чтобы помочь пользователю решить проблему
•С этой целью проектировщик GUI должен:
•Узнать нужды пользователя
•Предотвратить ошибки пользователей
•Оптимизацию возможностей пользователя
•Быть последовательным
Будьте последовательными
Последовательность –это важно, так-как пользователи привыкают к некоторым вещам, появляющихся и работающих в определенном порядке и связанными определенными отношениями. Цвета должны быть использованы последовательно, чтобы указывать на схожие типы информации или ее обработку. Структура экрана должна соответствовать принятому шаблону при переходе из одной части системы в другую ( например при переходе через меню). Например, сообщения об ошибках должны появляться в местах, соответствующих разработанной структуре меню.
Менеджеры Layout
Менеджер layout manager является объектом, который определяет способ, которым компоненты расположены в контейнере.
Есть несколько предопределенных менеджеров компоновки, определенных в стандартной библиотеке классов Java:
Каждый контейнер имеет менеджер компоновки по умолчанию, но мы можем явным образом установить менеджер компоновки, а также. Каждый менеджер компоновки имеет свои особые правила, регулирующие, как будут организованы компоненты. Некоторые менеджеры компоновки обратить внимание на нужный размер или Расстановка компонента, в то время как другие этого не делают. Менеджер компоновки пытается настроить расположение по мере добавления компонентов и, как контейнеры изменены.
Мы можем использовать метод setLayout , что бы изменить Layout менеджер
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
В следующем примере используется контейнер с закладками, который позволяет работать с одной из нескольких панелей, которые могут быть выбраны
Flow Layout
Flow layout располагает столько компонентов, сколько можно расположить в ряд, затем переходит к следующей строке. Ряды создаются по мере необходимости, чтобы вместить все компоненты. Компоненты отображаются в порядке их добавления в контейнер. Каждая строка компонентов центрируется по горизонтали в окне по умолчанию, но могут быть также выровнены влево или вправо. Кроме того, горизонтальные и вертикальные зазоры между компонентами может быть явно установлены.
Border Layout
Компонент border layout определяет пять областей, в которых компоненты могут быть добавлены с ориентацией по сторонам света и в центре.
BorderLayout – это один из layout Java Swing, который используется для расположения компонентов на контейнере. Принцип, который использует