Основы программирования на Java - страница 32

Шрифт
Интервал

стр.

>{

>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. Модель обработки событий от компонентов

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


Существует два различных типа событий - низкоуровневые и семантические. Низкоуровневые события связаны с физическими аспектами интерфейса пользователя - щелчками мыши, нажатиями клавиш клавиатуры и т.д. Семантические события строятся на базе низкоуровневых событий. Все низкоуровневые события являются подклассами класса ComponentEvent:

1. Containerevent. Возникает всякий раз, когда компонент добавляется или удаляется из контейнера;

2. FocusEvent. Предупреждает программу, что компонент получил или потерял фокус ввода;

3. InputEvent. Этот класс включает дополнительные подклассы KeyEvent и MouseEvent;

4. WindowEvent. Извещает программу, что пользователь воспользовался одним из системных элементов управления окна, например, кнопкой минимизации или кнопкой закрытия приложения.

К семантическим относятся следующие события:

1. ActionEvent. Уведомляет программу о выполнении специфического действия, связанного с некоторым компонентом (например, щелчка на кнопке);

2. AdjustmentEvent. Указывает, что было выполнено перемещение бегунка полосы прокрутки;

3. ItemEvent. Уведомляет программу, что пользователь измнил состояние переключателя, списка или флажка опции;

4. TextEvent. Возникает в том случае, когда пользователь изменяет текст в компонентах типа TextArea или TextField.

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

1. mouseEnter вызывается в том случае, когда мышь входит в компонент;

2. mouseExit вызывается при выходе мыши из области компонента;

3. mouseMove вызывается при перемещении мыши в области компонента;

4. mouseDown вызывается при нажатии кнопки мыши;

5. mouseDrag вызывается при перемещении мыши с нажатой кнопкой;

6. mouseUp вызывается при отпускании кнопки мыши.

Аналогично keyDown и keyUp вызываются при каждом нажатии и отпускании клавиши. Событие передается методу вместе с кодом нажатой клавиши. Событие можно проверить, чтобы посмотреть, нажаты ли в данный момент ка- кие-либо клавиши-модификаторы, для этой цели можно также пользоваться методами shiftDown, controlDown и metaDown. В классе Event определены десятки констант, позволяющих использовать символические имена, например, PGUP и


стр.

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