Класс Window во многом напоминает Panel за тем исключением, что он создает свое собственное окно верхнего уровня. В основном используется не непосредственно класс Window, а его подкласс Frame. Frame — это как раз то, что обычно и считают окном на рабочей поверхности экрана. У объекта Frame есть строка с заголовком, управляющие элементы для изменения размера и линейка меню. Для того чтобы вывести (спрятать) изображение объекта Frame, нужно использовать методы show и hide. Ниже приведен пример апплета, который показывает объект Frame с содержащимся в нем компонентом TextArea.

import java.awt. *;

import java.applet.*;

public class FrameDemo extends Applet {

public void init() {

int width = lnteger.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

String val = "Это учебное пособие " + "предназначено для ознакомления\n"

           + "с основами программирования на \n"

        + "объектно-ориентированном языке Java.\n\n";

TextArea text = new TextArea(val, 80,40);

Frame f = new Frame("Demo Frame");

f.setSize(width, height);

f.add("Center", text);

f.show();

}

}

12.15. Программирование меню

С каждым окном верхнего уровня может быть связана линейка меню. Объект MenuBar может включать в себя несколько объектов Menu. Последние, в свою очередь, содержат в себе список вариантов выбора — объектов MenuItem. Menu — подкласс MenuItem, так что объекты Menu также могут включаться в этот список, что позволяет создавать иерархически вложенные подменю. Вот пример, в котором к окну добавлены несколько вложенных меню.

import java.awt.*;

import java.applet. *;

public class MenuDemo extends Applet

{

public void init()

{

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

Frame f = new Frame("Demo Frame");

f.setSize(width, height);

MenuBar mbar = new MenuBar();

f. setMenuBar(mbar);

Menu file = new Menu("Файл");

file.add(new MenuItem("Новый..."));

file.add(newMenuItem("Открыть..."));

file.add(newMenuItem(“Закрыть”));

file.add(new Menultem("-"));

file.add(new MenuItem ("Выход..."));

mbar.add(file);

Menu edit = new Menu("Правка");

edit.add(newMenuItem("Bырeзaть"));

edit. add(new MenuItem("Копировать"));

edit.add(newMenultem("Вставить"));

edit.add(new Menultem("-"));

Menu sub = new Menu("Специальное");

sub.add(new MenuItem ("Первое"));

sub.add(new MenuItem("Bтopoe"));

sub. add(new Menultem("Третье"));

edit.add(sub);

edit.add(new CheckBoxMenuItem("Отладка"));

edit.add(new CheckBoxMenuItem ("Тестирование"));

mbar.add(edit);

f.show();

}

}

12.16. Модель обработки событий от компонентов

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

Перейти на страницу:

Похожие книги