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

Лабораторная работа 2

Рисование в окне, обработка событий мыши и клавиатуры

Цели работы

  1. Освоить программирование обработки событий по модели делегирования.

  2. Создать и отладить программы с графической обработкой и реакцией на события от мыши и клавиатуры.

Порядок выполнения работы

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

  2. Создать апплеты FontsList,LinesDraw, KeyCodesи объяснить их работу. Апплеты должны иметь возможность работать как независимые приложения, то есть реализованы как апплеты двойного назначения.

  3. Создать апплет двойного назначения по собственному заданию. Типовой вариант предполагает создание программы рисования, ввода текста, вывода рисунков в окно…

Вопросы для самопроверки и защиты.

  1. Что такое апплеты двойного назначения? Как они работают?

  2. Над объектом какого типа выполняются все графические операции?

  3. Почему рекомендуется использовать ограниченный набор цветов?

  4. Почему рекомендуется использовать ограниченный набор шрифтов?

  5. Как получить метрики шрифтов?

  6. Когда возникают события?

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

  8. Какие методы отвечают за обработку простых событий от мыши?

  9. Какие методы отвечают за обработку простых событий от клавиатуры?

  10. Что такое модель делегирования событий?

  11. Что такое вложенные классы?

  12. Что такое анонимные классы?

  13. Как выполнять рисование не в методе paint?

  14. Можно ли определять размеры апплета в методе init?

Краткие теоретические сведения

Конечно, одной из самых привлекательных особенностей Javaявляется возможность создания программ с хорошей графикой. Графика может использоваться как в апплетах, так и в приложениях. В настоящее время для создания красивого интерфейса используется библиотека классовSwing.Если используется приложение, то его главное окно создается на основе классаJFrameили класса, который наследует отJFrame. Одной из особенностей работы приложений является тот факт, что пользователь не может закрыть главное окно программы, пока не предусмотрит определенные действия. Ниже приведен пример кода, в котором такие действия предусмотрены.

import javax.swing.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class FrameUse {

public static void main(String[] args) {

JFrame frame = new JFrame ("Пример");

int width = 400;

int height = 300;

frame.addWindowListener( new ExitListener());

frame.setSize(width,height);

frame.setVisible(true);

}

}

class ExitListener extends WindowAdapter{

public void WindowClosing(WindowEvent event)

{

System.exit(0);

}

}

Здесь к приложению добавляется класс ExitListener,который реализует вызов методаSystem.exit(0)для закрытия окна. В приведенном примере это сделано немного не так, как в примере лабораторной работы 1. В приведенном примере используется обработка события по модели делегирования событий, рассматриваемая ниже в тексте работы.

Возможен и такой код:

import javax.swing.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class FrameUse {

public static void main(String[] args) {

JFrame frame = new JFrame ("Пример");

int width = 400;

int height = 300;

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(width,height);

frame.setVisible(true);

}

}

Здесь для выполнения тех же действий используется метод setDefaultCloseOperation.Обратите внимание на использование константыJFrame.EXIT_ON_CLOSE. Попробуйте объяснить, почему константа используется с именем классаJFrame.