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

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

  • изучение теоретического материала темы по конспекту лекций и литературе;

  • ознакомление с содержанием работы по настоящему методическому пособию.

2. Перемещение фигур на панели.

3. Изменение размера фигуры.

4. Интерфейс IResizable.

5. Изменение курсора мыши.

8.2 Перемещение фигур на панели

Процесс перемещения компонента в контейнере манипулятором мыши состоит из двух этапов: активация элемента зажатием клавиши мыши и отпускание клавиши мыши в другом месте контейнера. Для этого у контейнера существует два события mousePressed и mouseReleased соответственно.

При каждом нажатии клавиши мыши необходимо искать на панели фигуру, на которой произошло событие мыши. Для этого у контейнера существует метод findComponentAt(int x, int y). Но данный метод возвращает не только дочерние компоненты, но может вернуть и сам контейнер, поэтому необходимо проводить проверку того, что найдена именно фигура. Для этого можно использовать ключевое слово instanceof - принадлежность объекта классу или интерфейсу:

if (component instanceof Figure)

{

// code

}

Код определения фигуры источника события поместите в отдельный метод Figure findFigure(int x, int y). Не забывайте об инкапсуляции.

Сохраняйте фигуру в свойстве формы. Сохраняйте также координаты начала события перемещения.

В методе обработчика события mouseReleased устанавливайте у фигуры новые координаты. Помните об расстоянии от координат начала события до начала координат фигуры.

8.3 Изменение размера фигуры

Для изменения размера фигуры проделайте подобное. На событие mousePressed будет определяться активная фигура и сохраняться координаты начала события. Перемещения мыши в области “Ресайзера” (нижний правый угол фигуры) необходимо проверить самим (создайте метод boolean isResizer(Figure figure, int x, int y)). На событие mouseReleased будут задаваться новые размеры фигуры.

8.4 Интерфейс iResizable

Фигуры сделайте не все с изменяемым размером. Для этого метод изменения размера фигуры вынесите в отдельную сущность - интерфейс IResizable. Реализуйте данный интерфейс например фигурой квадрат, для этого существует ключевое слово implements:

public class Square implements IResizable

и реализуйте методы интерфейса в данном классе.

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

IResizable resizer = (IResizable) figure;

После чего уже обращаться к методу изменения размера.

8.5 Изменение курсора мыши

Для изменения курсора мыши у контейнера используйте метод setCursor:

container.setCursor(new Cursor(Cursor.MOVE_CURSOR));

Изменяйте курсор как при перемещении фигур, так и при изменении их размера.

MOVE_CURSOR – курсор перемещения.

SE_RESIZE_CURSOR – курсор изменения размера.

Не забывайте сбрасывать курсор на дефолтный (Cursor.DEFAULT_CURSOR).

ПЛАН ВЫПОЛНЕНИЯ РАБОТЫ

1. Выполните все задания представленные выше.

2. Убедитесь, что освоили материал. При необходимости проработайте нужные уро-ки.

3. Сделайте отчет по выполненной работе.

4. Подготовьтесь к защите лабораторной работы.

СОДЕРЖАНИЕ ОТЧЕТА

1. Исходный код программы.

2. Выводы по результатам работы.