|
or (int i=0; i < lines.size(); i++)
{
Rectangle p = (Rectangle)lines.elementAt(i);
g.drawLine(p.width, p.height, p.x, p.y);
}
Для объектов класса Vector можно использовать метода size, возвращающий
количество элементов в массиве, чем мы воспользовались для проверки условия
выхода из цикла.
Чтобы извлечь элемент массива по его номеру, мы воспользовались методом
elementAt, передав ему через единственный параметр номер извлекаемого элемента.
Так как в массиве хранятся объекты класса Rectangle, перед инициализацией
ссылки p мы выполняем преобразование типов.
Перед завершением работы метод paint сбрасывает признак рисования, записывая
в поле bDrawing значение false:
bDrawing = false;
Метод mouseDown
В начале своей работы метод mouseDown определяет, был ли сделан одинарный
щелчок клавишей мыши, или двойной. Если был сделан двойной щелчок мышью, метод
удаляет все элементы из массива list, а затем перерисовывает окно аплета,
вызывая метод repaint:
lines.removeAllElements();
repaint();
После перерисовки окно аплета очищается от линий.
Если же был сделан одинарный щелчок клавишей мыши, метод mouseDown сохраняет
текущие координаты курсора в переменных dmDown и dmPrev, а затем сбрасывает
признак рисования:
dmDown = new Dimension(x, y);
dmPrev = new Dimension(x, y);
bDrawing = false;
Метод mouseUp
Когда пользователь отпускает клавишу мыши, вызывается метод mouseUp. В его
задачу входит сохранение текущих координат курсора мыши в поле dmUp, а также
добавление нового элемента в массив lines, как это показано ниже:
dmUp = new Dimension(x, y);
lines.addElement(
new Rectangle(dmDown.width, dmDown.height, x, y));
repaint();
После добавления элемента в массив метод mouseUp инициирует перерисовку окна
аплета, вызывая для этого метод repaint.
Заметим, что в качестве координат начала линии мы записываем в элемент
массива координаты точки, где в последний раз пользователь нажимал курсор мыши.
В качестве координат конца линии используются текущие координаты курсора на
момент
|
|