<
  • Главная
Статьи

Общие правила написания событий слушателей

Когда AWT вызывает метод прослушивателя событий, этот метод выполняется в потоке событий AWT. Поскольку все другие методы обработки событий и рисования выполняются в том же потоке, медленный метод прослушивания событий может заставить программу казаться не отвечающей и медленной для перерисовки.

В этом разделе рассказывается, как использовать адаптеры и внутренние классы для уменьшения помех в вашем коде. Если вас не волнует эта тема, не стесняйтесь переходить к следующий раздел ,

Большинство интерфейсов слушателей, в отличие от ActionListener, содержат более одного метода. Например, интерфейс MouseListener содержит пять методов: mousePressed, mouseReleased, mouseEntered, mouseExited и mouseClicked. Даже если вы заботитесь только о щелчках мыши, если ваш класс напрямую реализует MouseListener, вы должны реализовать все пять методов MouseListener. Методы для тех событий, которые вас не волнуют, могут иметь пустые тела. Вот пример:

// Пример с загроможденным, но допустимым кодом. открытый класс MyClass реализует MouseListener {... someObject.addMouseListener (this); ... / * Пустое определение метода. * / public void mousePressed (MouseEvent e) {} / * Пустое определение метода. * / public void mouseReleased (MouseEvent e) {} / * Пустое определение метода. * / public void mouseEntered (MouseEvent e) {} / * Пустое определение метода. * / public void mouseExited (MouseEvent e) {} public void mouseClicked (MouseEvent e) { ... // Здесь реализована реализация обработчика событий ... }} К сожалению, результирующая коллекция пустых тел методов может усложнить чтение кода и поддерживать. Чтобы помочь вам не загромождать код пустыми телами методов, AWT и Swing предоставляют класс адаптера для каждого интерфейса слушателя с более чем одним методом. [ОЖИДАЕТ: это не совсем верно для Swing.] ( Обработка общих событий перечисляет все слушатели и их адаптеры.) Например, класс MouseAdapter реализует интерфейс MouseListener. Класс адаптера реализует пустые версии всех методов его интерфейса.

Чтобы использовать адаптер, вы создаете его подкласс вместо прямой реализации интерфейса слушателя. Например, расширяя MouseAdapter, ваш класс наследует пустые определения всех пяти методов, которые содержит MouseListener.

/ * * Пример расширения класса адаптера вместо непосредственной реализации интерфейса слушателя. * / открытый класс MyClass extends MouseAdapter {... someObject.addMouseListener (this); ... public void mouseClicked (MouseEvent e) { ... // Реализация обработчика событий здесь ... }}

Что если вы не хотите, чтобы ваш класс обработки событий наследовал от класса адаптера? Например, предположим, что вы пишете апплет, и вы хотите, чтобы ваш подкласс Applet содержал некоторый код для обработки событий мыши. Поскольку язык Java не допускает множественное наследование, ваш класс не может расширять классы Applet и MouseAdapter. Решение состоит в том, чтобы определить внутренний класс - класс внутри вашего подкласса Applet - который расширяет класс MouseAdapter,

// Пример использования внутреннего класса. открытый класс MyClass расширяет Applet {... someObject.addMouseListener (new MyAdapter ()); ... class MyAdapter extends MouseAdapter {public void mouseClicked (MouseEvent e) { ... // Здесь реализована реализация обработчика событий ... }}} Вот еще один пример использования внутреннего класса: // Пример использования анонимного внутреннего учебный класс. открытый класс MyClass extends Applet {... someObject.addMouseListener (new MouseAdapter () {public void mouseClicked (MouseEvent e) { ... // Реализация обработчика событий идет здесь ... }}); ...}} Внутренние классы работают хорошо, даже если вашему обработчику событий необходим доступ к частным переменным экземпляра из включающего класса. Пока вы не объявляете внутренний класс статическим, внутренний класс может ссылаться на переменные и методы экземпляра, как если бы его код находился в содержащем классе. Чтобы сделать локальную переменную доступной для внутреннего класса, просто сохраните копию переменной как конечную локальную переменную. Примечание. Некоторые компиляторы 1.1 не позволяют внутреннему классу использовать частные переменные экземпляра включающего класса. Обходной путь - удалить закрытый спецификатор из объявления переменной экземпляра.

Для получения дополнительной информации о внутренних классах см. Реализация вложенных классов Для получения дополнительной информации о внутренних классах см ,

Похожие

Обработка событий
... слушателей. И наоборот, один слушатель может зарегистрироваться в нескольких источниках событий. событие событие объект / ----> источник прослушивателя событий ---------------------------> прослушиватель событий \ ----> прослушиватель событий Надпись: несколько слушателей могут зарегистрироваться, чтобы получать уведомления о событиях определенного типа из определенного источника. Всякий раз, когда вы хотите обнаружить события от определенного компонента,
Как произвести хорошее первое впечатление? Искусство написания контент-маркетинговых текстов
Вернуться в блог С хорошим текстом в Интернете это похоже на первое свидание - если вы пропустите ранние свидания, есть большая вероятность, что вы встретитесь снова. И хотя вы можете настаивать на том, что внешний вид не имеет большого значения, в контенте контент-маркетинга
Метаданные, системные представления в SQL Server, информация об объектах
Одним из наиболее полезных источников информации о структурах и свойствах объектов (метаданных), создаваемых в базах данных SQL Server, являются системные представления. Обычные пользователи редко используют свои возможности. Возможно, это связано с количеством просмотров, разных типов и необходимостью узнать об их структурах. Или, может быть, они просто не осознают своего существования или им они ни для чего не нужны? Количество представлений, из которых мы можем извлечь уроки, увеличивается
Конфигурация брандмауэра в Windows Vista
Впервые брандмауэр появился в Windows XP SP2 (по умолчанию включен). Это одна из основных программ защиты от угроз, возникающих в результате использования Интернета и сети безопасности. Фильтрует как входящие, так и исходящие соединения с компьютера, затем при необходимости блокирует потенциально опасное приложение. Брандмауэр, интегрированный с Windows XP, был относительно простой и не встроенной системной функцией. В Windows Vista этот элемент был перестроен и улучшен. Наиболее важные

Комментарии

Если они не обращают внимания на правила, которые они устанавливают, почему тогда их должны уважать водители?

Или, может быть, они просто не осознают своего существования или им они ни для чего не нужны?


Новости
    Без плагина
    На сайте WordPress имеется файл, именуемый как .htaccess. Многие пользователи не предают ему особого внимания и не используют все его возможности. На самом деле файл .htaccess – это дополнительные конфигурации

    Плагин подписки wordpress
    Очень трудно найти один плагин подписки wordpress , который объединил бы в себе все виды подписок, которые так необходимы сайту. Именно поэтому я решил сделать подборку лучших плагинов, которые смогут

    Слайд-шоу с помощью плагина для WordPress UnPointZero Slider
    Плагин для cms WordPress UnPointZero Slider – новостной слайдер. Он отражает в форме слайд-шоу изображения со ссылками на ваши статьи и краткие выдержки оттуда. Его можно установить и на новостной сайт,

    Плагины для Wordpress
    С помощью этого плагина вы легко сможете интегрировать Google диск на ваш WordPress сайт или блог . Gravity Forms — лучший плагин для создания форм на WordPress, от самых простых (например, форма

    Подписки плагином JetPack: размещение и редакция формы подписки
    Вступление Здравствуйте! В этой статье я покажу, как использовать плагин JetPack для создания пользовательской формы подписки и как эту формы подписки плагином JetPack добавлять в статьи сайта, а при

    Чистка сайта WordPress плагином WP-optimize
    От автора Со временем использования система WordPress накапливает не нужные файлы, комментарии и неиспользуемые данные в базе данных. Эти файлы и данные создаются в процессе работы и нужны для этого,

    Возможности Jetpack плагина
    Вступление Возможности Jetpack плагина это более 30 функциональных модуля плагина, делающего его универсальным плагином WordPress, заменяющего аналогичные сторонние плагины. Jetpack один заменяет десятки

    Резервное копирование WordPress сайта без плагинов
    Вступление Резервное копирование WordPress это второе, что нужно научиться делать после установки WordPress. Можно сколько угодно говорить о безопасности сайта и его защите, но лучшего варианта защиты

    Плагины на приват для Майнкрафт ПЕ
    > > Плагины на приват для Майнкрафт ПЕ Порой всем нам хочется попробовать себя в роли администратора сервера и испытать эту ответственность, но, к сожалению, вы не всегда все знаете о создании

    Плагин WordPress Database Backup. Архивация базы данных блога на WordPress
    Привет друзья! Сегодня на очереди еще один простой, НО, необходимый и полезный плагин — плагин WordPress Database Backup , который с легкостью и самостоятельно произведет процесс, который научно называется:

  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью