Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java.doc
Скачиваний:
11
Добавлен:
20.04.2019
Размер:
936.45 Кб
Скачать

Графический пользовательский интерфейс

Основой для разработки графического пользовательского интерфейса в языке Java является библиотека Abstract Window Toolkit (java.awt).

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

Усовершенствованным и расширенным вариантом библиотеки AWT является библиотека Swing (javax.swing).

Её составляющие позволяют реализовать настраиваемый пользовательский интерфейс, полностью независимый от используемой операционной системы.

Для большинства элементов пользовательского интерфейса существует два варианта реализации: в библиотеке AWT и в библиотеке Swing.

Например, кнопки описываются классами java.awt.Button и javax.swing.JButton, текстовые поля – java.awt.TextField и javax.swing.JTextField и т.д.

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

Основными понятиями, используемыми при разработке пользовательского интерфейса являются компонент и контейнер.

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

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

Все компоненты, содержащиеся в (на) контейнере, образуют список и отображаются в соответствии со своим расположением в этом списке.

Классом-прародителем всех компонентов является класс java.awt.Component.

Основными методами данного класса являются:

– методы, определяющие размеры и положение компонента (setSize(), setLocation(), setBounds() и др.);

– методы, отвечающие за внешний вид компонента (setBackground(), setForeground(), setFont(), setCursor(), setVisible() и др.);

– методы, отвечающие за обработку событий (addKeyListener(), addMouseListener() и др.)

Классом-прародителем всех контейнеров является класс java.awt.Container. Основными методами данного класса являются:

Component add(Component comp) добавить компонент в контейнер;

Component add(Component comp, int index) добавить компонент в указанную позицию списка компонентов;

void remove(Component comp) удалить указанный компонент из контейнера;

void remove(int index) удалить компонент из указанной позиции списка компонентов;

void removeAll() удалить все компоненты из контейнера.

Изменение размеров и/или положения компонентов внутри контейнера осуществляет специальный объект – менеджер размещения. Задать менеджер размещения для контейнера можно с помощью метода setLayout().

Различные менеджеры размещения используют для определения позиции и/или размеров компонентов различные правила.

Если для контейнера менеджер размещения не задан, то размеры и положение каждого компонента требуется задать методами setSize(), setLocation() или setBounds().

Иерархия классов-контейнеров

Panel (JPanel) реализует простейший контейнер, который должен быть размещен внутри другого, более «продвинутого» контейнера. Обычно используется для группировки компонентов (в том числе и других панелей). Для панелей и их подклассов по умолчанию используется менеджер размещения FlowLayout.

Applet (JApplet) используется для разработки приложений-апплетов, встраиваемых в Web-страницы.

Window (JWindow) окно – представляет собой простейший независимый контейнер. Основные атрибуты окна (заголовок, границы, строка меню) по умолчанию отключены.

Окна обычно используются для организации диалогов, панелей инструментов и т.п. Для окон и их подклассов по умолчанию используется менеджер размещения BorderLayout.

Dialog (JDialog) диалоговое окно – используется для организации взаимодействия с пользователем. В диалоговом окне по умолчанию отображаются заголовок окна и граница.

Frame (JFrame) окно приложения – представляет собой окно, имеющее заголовок и границу.

Пример. Создание простого окна

// создать окно с заголовком

JFrame frame = new JFrame("Простое окно");

// задать его размеры

frame.setSize(320, 240);

// при нажатии кнопки «Закрыть» происходит выход из программы

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// отобразить окно на экране

frame.setVisible(true);

// создать текстовую надпись ...

JLabel label = new JLabel("Hello, world!", JLabel.CENTER);

// ... и разместить её в окне

frame.add(label);

frame.validate();

Компонент Label представляет собой однострочную текстовую надпись. Текст надписи задается при вызове конструктора или методом setText(String text). Выравнивание надписи относительно границ компонента может быть задано в конструкторе или методом setAlignment(int alignment).

Компонент JLabel дополнительно позволяет отображать пиктограмму, которая задается при вызове конструктора или методом setIcon(Icon icon).

Компонент Button представляет собой кнопку. Надпись на кнопке задается при вызове конструктора или методом setLabel(String Label).

Компонент JButton дополнительно позволяет отображать на кнопке пиктограмму, которая задается при вызове конструктора или методом setIcon(Icon icon). Кроме того, методами setPressedIcon(), setRolloverIcon(), setDisabledIcon() и др. можно задать пиктограммы, соответствующие различным состояниям кнопки.

Компонент TextField представляет собой однострочное текстовое поле, используемое для ввода текстовой информации. Начальное содержимое поля задается при вызове конструктора или методом setText(String text). Введенный пользователем текст можно получить методом getText().

Компонент JTextField дополнительно позволяет организовать взаимодействие с системным Буфером обмена с помощью методов copy(), cut(), paste(), а также поддерживает технологию DragnDrop.

Менеджеры размещения

За размещение компонентов в контейнерах отвечают специальные объекты – менеджеры размещения.

Каждый менеджер размещения использует собственные правила для определения положения и/или размеров компонентов в контейнере.

Для указания используемого менеджера размещения служит метод setLayout().

Менеджер размещения FlowLayout

Размещает компоненты, добавляемые в контейнер, построчно: слева направо, сверху вниз.

При изменении размеров контейнера происходит перераспределение положения компонентов с сохранением их размеров.

okoshko.setLayout( new FlowLayout() );

Менеджер размещения BorderLayout управляет размещением пяти компонентов: один – в центре контейнера, и ещё по одному – у каждого края окна.

okoshko.setLayout( new BorderLayout() );

Менеджер размещения GridLayout размещает добавляемые в контейнер компоненты в виде прямоугольной таблицы

okoshko.setLayout( new GridLayout(4, 4, 5, 5) );

количество строк

количество столбцов

промежуток по горизонтали

промежуток по вертикали

Менеджер размещения BoxLayout размещает все компоненты в одну строку или в один столбец

okoshko.setLayout( new BoxLayout(okoshko, BoxLayout.X_AXIS) );

okoshko.setLayout( new BoxLayout(okoshko, BoxLayout.Y_AXIS) );

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]