Лекция: Класс MouseEvent
В предыдущих уроках мы рассматривали работу с мышкой. Напомним, что для этого мы объявляли класс нашего апплета потомком интерфейсов MouseListener и MouseMotionListener. Во всех методах интерфейсов, которые мы должны были реализовать для нашего апплета, присутствовал параметр типа MouseEvent. Рассмотрим этот класс более подробно.
Указанный класс позволяет получить такие данные, как координаты мыши (x и y), нажатую кнопку мыши (левая, правая или средняя), была ли нажата одна из трех клавиш-модификаторов на клавиатуре — Ctrl, Alt или Shift.
Вот пример реализации метода mouseClicked интерфейса MouseListener:
public voidifВ этом примере мы определяем, что за кнопка мыши была нажата, используя при этом метод getButton() и статическую константу BUTTON1 класса MouseEvent (для остальных кнопок мыши константы будут BUTTON2 и BUTTON3 соответственно). Если нажата левая кнопка мыши, то мы получаем координаты мыши через вызов методов getX() и getY() класса MouseEvent и вызываем перерисовку. Наряду с методами getX() и getY() можно использовать и метод getPoint() — он возвращает объект типа Point.
А вот пример, в котором мы определяем, была ли при нажатии кнопки мыши удержана клавиша Alt:
public voidifТут для опеределения, была ли нажата клавиша Alt, мы используем метод isAltDown класса MouseEvent. Соответствующие методы для других кнопок — это isControlDown() и isShiftDown().
Метод update()
Часто при перерисовке апплета надо отрисовывать заново не весь апплет, а только его часть. Например, у вас в апплете может быть неподвижный фон, по которому что-то там движеться. Для перерисовки в этом случае не надо перерисовывать весь фон, а только ту его часть, на которой находился и находится движущийся объект. При таким способе перерисовки мы избавимся и от неприятного мерцания нашего апплета.
Для такой частичной перерисовки мы использем не метод paint (который перерисовывает все), а метод update, который позволяет задать для перерисовки только часть апплета.
Вот пример, иллюстрирующий это:
public voidЗдесь мы задаем прямоугольник для перерисовки с помощью метода clipRect класса Graphics. Параметры у него такие — x и y начальной точки и ширина с высотой. После задания прямоугольника для перерисовки мы вызываем метод paint, в который в качестве параметра передаем тот же самый g, для которого мы только что вызвали метод clipRect. Разумеется метод paint должен быть тоже определен в нашем апплете (например, такой, как в уроке 8).