Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

3. 2. Требования к отчету. Лабораторная работа 4. Библиотеки AWT и swing для построения графического интерфейса пользователя. Обработка событий.




3. 2. Требования к отчету

1. Привести UML-диаграмму и текст программы. Классы должны находиться в разных файлах.

ЛАБОРАТОРНАЯ РАБОТА 4

Библиотеки AWT и Swing для построения графического интерфейса пользователя. Обработка событий.

 

4. 1. Общие сведения о графических интерфейсах

Графический пользовательский интерфейс (GUI) – основной способ взаимодействия конечных пользователей с java-приложением. Для разработки прикладного программного обеспечения на языке Java, а точнее графического интерфейса приложений, обычно используются пакеты AWT и Swing.

  • AWT  - Abstract Window Toolkit - (для доступа загружается пакет java. awt) содержит набор классов, позволяющих выполнять графические операции и создавать оконные элементы управления, подобно тому, как это делается в VBA и Delphi;
  • Swing (для доступа загружается пакет javax. swing) является " надстройкой" над AWT и содержит новые классы, в основном аналогичные AWT. К именам классов добавляется J ( JButton, JLabel и др).

На данный момент основные классы для построения визуальных интерфейсов содержатся в пакете Swing. Из пакета AWT используются классы для обработки сообщений. Никаких препятствий для совместного использования графических компонентов этих двух библиотек нет.

Для программирования графического интерфейса пользователя сначала нужно научиться создавать окна Для этого в библиотеке AWT предусмотрен класс Frame, в библиотеке Swing - класс JFrame.

Пример 4. 1 (Окно). Напишем простенькую программу на Java, создающую пустое окно. Когда это окно будет закрыто поль­зователем, программа завершится.

package javaapplication1;

import javax. swing. *;

public class main {

public static void main(String[] args) {

JFrame f = new JFrame ();

f. setSize(300, 200);

    f. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); //закрывает окно

    f. setVisible(true);

 }

}

Созданное таким образом окно пустое, но оно умеет делать все то, что требуется от окон в оконной системе: его можно перемещать, изменять его размер, раскрывать на весь экран или минимизировать на панель.

Следующее, чему мы научимся — выводить в созданное окно некоторый текст. Для этого существует класс JLabel (метка). Это пассивный элемент, позволяющий показывать в окнах определенный текст. Основное его достоинство состоит в том, что он вписывается в общую структуру интерфейса, т. е. занимает определенное место и может авто­матически перерисовываться, например, если он располагался в закрытой другими окнами части окна и затем стал видимым.

Пример 4. 2 (Метка). Окно с текстом «Hello, world! ». (Приводится только текст метода main, в остальном содержимое файла сохраняется. )

             

public static void main(String[] args) {

JFrame f = new JFrame();

JLabel lab = new JLabel(" Hello, world! " ); //создать новый элемент " метка"

f. setSize(300, 200);

f. setLocation(500, 200); //задает расположение окна

 

f. add(lab); //присоединить " метку" к окну

f. setDefaultCloseOperatіon(JFrame. EXIT_ON_CLOSE);                                  

f. setVisible(true);

}           

Что происходит, если менять размер созданного программой окна?

Задача для самостоятельного решения 4. 1:

а) Измените текст метки на «Я метка 1 очень крута» или любой другой.

б) Напишите программу, создающую три-четрыре метки (кнопки) в окне. Как они будут располагаться относительно окна и друг относительно друга? А если менять размер окна?

Вот так можно добавить кнопку - для этого существует класс JButton:

Пример 4. 3 (Кнопка и панель).

public static void main(String[] args) {

JFrame f = new JFrame ();

JPanel p = new JPanel();

JButton b = new JButton(" Press me! " );

p. add(b);

f. setSize(300, 200);

f. add(p);

//f. pack(); как вариант - " упаковывает" окно до оптимального размера // всех расположенных в нем компонентов.

f. setDefaultCloseOperatіon(JFrame. EXIT_ON_CLOSE);

f. setVisible(true);

}         

Задача для самостоятельного решения 4. 2:

Напишите программу, создающую 8-9 меток (кнопки) в окне ( только теперь добавляйте элементы в панель JPanel ). Как они будут располагаться относительно окна и друг относительно друга? А если менять размер окна от минимального до максимального? А если вытянуть его в узкую вертикальную полоску?

 

Здесь кнопка добавляется в окно не непосредственно, а через специальный объект класса JPanel — так называемую панель. Панель нужна для того, чтобы управлять размещением элементов в окне. Менеджер размещения FlowLayout включается в работу по умолчанию.

4. 2. Способы размещения элементов

 

Размещение элементов с помощью менеджеров (компоновщиков)

Можно конечно размещать компоненты " вручную", задавая их размеры и положение в контейнере абсолютными координатами в координатной системе контейнера и используя метод setBounds().

Такой способ размещает компоненты с точностью до пикселя, но не позволяет перемещать их менджеру компонентов автоматически: при изменении размеров окна с помощью мыши компоненты останутся на своих местах привязанными к левому верхнему углу контейнера. Кроме того, нет гарантии, что все мониторы отобразят компоненты так, как вы задумали.

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

Чтобыизбавить программиста от этой кропотливой работы, в библиотеку AWT внесены два интерфейса: LayoutManager и порожденный от него интерфейс LayoutManager2, а также несколько реализаций этих интерфейсов:

классы BorlerLayout, CardLayout, FlowLayout, GridLayout, GridBagLayou и др.

Эти классы названы менеджерами размещения (layout manager) компонентов. Библиотека Swing добавляет к указанным классам свои менеджеры размещения, используемые контейнерами Swing.

Каждый программист может создать собственные менеджеры размещения, реализовав интерфейсы LayoutManager или LayoutManager2.

Посмотрим, как размещают компоненты эти классы:

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...