Обработка событий
с использованием нового Java API

После того, как я получил много писем с вопросами, что делать с предупреждениями компилятора о deprecated event handling, которые я использовал в примерах апплетов, я решил написать эту главу о более новой, не deprecated версии обработки событий. Тем не менее, две других главы, посвященных обработке событий мыши и клавиатуры, также имеют силу, так как они более детализированы, чем данная глава, и, как я думаю, более легки для понимания неопытным программистам.
В этой главе я хочу расширить обработку событий "новым" методом, использующим так называемые Listeners, не вдаваясь, однако, в детали листенеров, интерфейсов... Если вы хотите узнать больше об этом, обратитесь к Java API или хорошей книге по Java.

KeyListener

Для обработки событий клавиатуры в пакете java.awt.event вы найдете интерфейс под названием KeyListener. Если вы хотите, чтобы ваш апплет обрабатывал события клавиатуры, он должен реализовывать этот интерфейс или использовать класс, реализующий его. Этот интерфейс дает возможность реализовать следующие методы (их имена говорят сами за себя ;):

  • keyPressed(KeyEvent e)
  • keyReleased(KeyEvent e)
  • keyTyped(KeyEvent e)

ЧТобы позволить апплету отлавливать события клавиатуры, вы должны зарегистрировать KeyListener в апплете. Это делается с помощью вызова метода addKeyListener(KeyListener listener) в методе init() класса апплета. Если апплет реализует интерфейс сам, просто напишите addKeyListener(this). Большее количество информации о произошедшем событии (какая клавиша нажата...) доступна через переменную KeyEvent, которая приходит с вызовом соответствующего метода Листенера. Вы можете найти некоторые примеры получения детальной информации о событии клавиатуры в исходном коде, прилагающемся к данной главе.

События мыши

События мыши обрабатываются точно так же, как и события клавиатуры, за одним исключением. Есть два разных listener interfaces для событий мыши (также в пакете java.awt.event), которые называются MouseListener и MouseMotionListener. Оба должны быть добавлены в апплет таким же путем, как и события клавиатуры, чтобы апплет мог обрабатывать клики мыши и ее движения. Чтобы добавить listeners в апплет, используйте методы addMouseListener(MouseListener listener) and addMouseMotionListener(MouseMotionListener listener). Следующие методы должны быть реализованы листенерами классов (имена снова говорят сами за себя):

MouseListener

  • mouseClicked(MouseEvent e)
  • mouseEntered(MouseEvent e)
  • mouseExited(MouseEvent e)
  • mousePressed(MouseEvent e)
  • mouseReleased(MouseEvent e)

MouseMotionListener

  • mouseMoved(MouseEvent e)
  • mouseDragged(MouseEvent e)

Детальную информацию вы можете получить из MouseEvent, если вы взглянете на апплет, прилагающийся к даннной главе.
Итак, это был краткий обзор листенеров событий Java и современной API событий. Я надеюсь, что помог вам, а те, кто прочитал главу и не понял, может использовать упрощенную обработку событий, о которой говрилось в предыдущих двух главах. Мне и самому понадобилось некоторое время, чтобы понять, что делают эти чертовы листенеры ;-). Что ж, а теперь настало время посмотреть на исходный код и на сам работающий апплет.

Скачать исходный код апплета
Запустить апплет

Следующая глава:
Первая игра

Fabian Birzele, 2001-2003.
перевод и веб-дизайн: В.Мурзагалин, 2004.