Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Классы адаптеров упрощают обработку событий, поскольку уже наследуют интерфейсы событий и реализуют обработчики по умолчанию. Классы адаптеров ComponentAdapter, ContainerAdapter, FocusAdapter, KeyAdapter, MouseAdapter, MouseMotionAdapter и WindowAdapter реализуют соответственно интерфейсы прослушивания событий ComponentListener, ContainerListener, FocusListener, KeyListener, MouseListener, MouseMotionListener и WindowListener. Для использования класса адаптера необходимо создать новый класс объекта приёмника, который наследует требуемый класс адаптера. В созданном классе можно переопределить требуемые обработчики интерфейса. Остальные обработчики могут быть оставлены без внимания, поскольку они уже реализованы в наследуемом классе адаптера. Затем создаются объект-источник события и объект нашего нового класса с переопределённым в нём нужным обработчиком. И, наконец, к объекту источнику его функция add Type Listener () добавляет объект приёмника. Из примера 9.5.3.1 видно, насколько упрощается программа. Сравните варианты 5 и 6 примера 9.5.3.1 с вариантом 4 примера 9.5.2. В классе Listener теперь отпала необходимость обязательной реализации всех обработчиков интерфейса MouseListener. Класс Listener упростился, но наследование класса MouseAdapter дозволяет для этого класса Listener теперь наследование только интерфейсов.
Программу можно ещё упростить, применив внутренние или анонимные классы, о чём рассказано в разделе 9.5.4.
Пример 9.5.3.1. Обработка событий мыши на Java, используя классы адаптеров.
///////////////
// Java и J# Вариант 5
import java.awt.*;
import java.awt.event.*;
class Listener extends MouseAdapter
{
// Выполнить предопределённый обработчик mousePressed мыши
Public void mousePressed (MouseEvent mE)
{
System.out.println ("Mouse: x= " + mE.getX ()
+ " y= " + mE.getY());
}
}
// Класс прикладного окна
class MainClass extends Frame
{
public MainClass ()
{
Listener ls= new Listener ();
this.setSize (400, 200);
this.setTitle ("Hello");
this.addMouseListener(ls);
}
public static void main () // Главная функция
{
MainClass mC= new MainClass ();
mC.show ();
}
}
///////////////
// Java и J# Вариант 6
import java.awt.*;
import java.awt.event.*;
class Listener extends MouseAdapter
{
// Выполнить предопределённый обработчик mousePressed мыши
Public void mousePressed (MouseEvent mE)
{
System.out.println ("Mouse: x= " + mE.getX ()
+ " y= " + mE.getY());
}
}
// Класс прикладного окна
class MainClass extends Frame
{
public MainClass ()
{
this.setSize (400, 200);
this.setTitle ("Hello");
this.addMouseListener (new Listener ());
}
public static void main () // Главная функция
{
MainClass mC= new MainClass ();
mC.show ();
}
}
/*
Result:
При каждом нажатии на клавишу мыши в прикладном окне выдаётся на консоль строка вида
Mouse: x= 10 y= 55, где x, y - координаты носика мыши
*/
Java и J#. Если бы в вариантах 5 и 6 программы класс Listener приёмника наследовал интерфейс MouseListener, то пришлось бы описать в классе все интерфейсные функции этого интерфейса, поскольку наследование интерфейса требует это. То есть поступить так, как в примере 9.5.2. Но класс Listener примера 9.5.3.1 наследует класс MouseAdapter адаптера, который наследует интерфейс MouseListener и уже реализовал все его интерфейсные функции по умолчании. Это позволило переопределить в классе Listener только нужную нам функцию mousePressed().
Подписка на событие мыши в вариантах 5 и 6 отличается. В варианте 5 в теле конструктора MainClass() создаётся объект ls приёмника (слушателя) в куче, и функция addMouseListener использует эту ссылку ls. В варианте 6 ссылка автоматически создаётся в качестве аргумента в результате создания объекта приёмника класса Listener.
Обработка событий мыши на языке Java, используя внутренние классы адаптеров и анонимные классы
Классы языков программирования C++/CLI, C# и Java позволяют описывать и использовать внутри себя другие классы, которые называются внутренними классами. В программе примера 9.5.4.1 внутри класса MainClass источника описан внутренний класс Listener приёмника, наследующий класс MouseAdapter адаптера. Конструктор класса MainClass с помощью функции addMouseListener() присоединяет приёмник к источнику.
Пример 9.5.4.1. Обработка событий мыши на Java, используя внутренние классы адаптеров.
///////////////
// Java и J# Вариант 7
import java.awt.*;
import java.awt.event.*;
// Класс прикладного окна
public class MainClass extends Frame
{
public MainClass ()
{
this.setSize (new Dimension (400, 200));
this.setTitle ("Hello");
this.addMouseListener(new Listener ());
}
// Внутренний класс Listener приемника событий мыши
|
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!