Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Класс MouseEvent



В предыдущих уроках мы рассматривали работу с мышкой. Напомним, что для этого мы объявляли класс нашего апплета потомком интерфейсов MouseListener и MouseMotionListener. Во всех методах интерфейсов, которые мы должны были реализовать для нашего апплета, присутствовал параметр типа MouseEvent. Рассмотрим этот класс более подробно.

Указанный класс позволяет получить такие данные, как координаты мыши (x и y), нажатую кнопку мыши (левая, правая или средняя), была ли нажата одна из трех клавиш-модификаторов на клавиатуре - Ctrl, Alt или Shift.

Вот пример реализации метода mouseClicked интерфейса MouseListener:

public void mouseClicked(MouseEvent e){ if (e.getButton()==MouseEvent.BUTTON1){ x=e.getX(); y=e.getY(); repaint(); } }

В этом примере мы определяем, что за кнопка мыши была нажата, используя при этом метод getButton() и статическую константу BUTTON1 класса MouseEvent (для остальных кнопок мыши константы будут BUTTON2 и BUTTON3 соответственно). Если нажата левая кнопка мыши, то мы получаем координаты мыши через вызов методов getX() и getY() класса MouseEvent и вызываем перерисовку. Наряду с методами getX() и getY() можно использовать и метод getPoint() - он возвращает объект типа Point.

А вот пример, в котором мы определяем, была ли при нажатии кнопки мыши удержана клавиша Alt:

public void mouseClicked(MouseEvent e){ if (e.isAltDown()){ p = e.getPoint(); // p - переменная типа Point. repaint(); } }

Тут для опеределения, была ли нажата клавиша Alt, мы используем метод isAltDown класса MouseEvent. Соответствующие методы для других кнопок - это isControlDown() и isShiftDown().

Метод update()

Часто при перерисовке апплета надо отрисовывать заново не весь апплет, а только его часть. Например, у вас в апплете может быть неподвижный фон, по которому что-то там движеться. Для перерисовки в этом случае не надо перерисовывать весь фон, а только ту его часть, на которой находился и находится движущийся объект. При таким способе перерисовки мы избавимся и от неприятного мерцания нашего апплета.

Для такой частичной перерисовки мы использем не метод paint (который перерисовывает все), а метод update, который позволяет задать для перерисовки только часть апплета.

Вот пример, иллюстрирующий это:

public void update(Graphics g){ // Задаем прямоугольник для перерисовки. g.clipRect(0, 0, 50, 50); // Вызываем перерисовку. paint(g); }

Здесь мы задаем прямоугольник для перерисовки с помощью метода clipRect класса Graphics. Параметры у него такие - x и y начальной точки и ширина с высотой. После задания прямоугольника для перерисовки мы вызываем метод paint, в который в качестве параметра передаем тот же самый g, для которого мы только что вызвали метод clipRect. Разумеется метод paint должен быть тоже определен в нашем апплете (например, такой, как в уроке 8).





Дата публикования: 2014-11-04; Прочитано: 462 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...