Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Part6(9-прилож)+++а.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.82 Mб
Скачать

9.5.4. Обработка событий мыши на языке 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 приемника событий мыши

class Listener extends MouseAdapter

{

// Выполнить предопределённый обработчик mousePressed мыши

public void mousePressed (MouseEvent mE)

{

System.out.println ("Mouse: x= " + mE.getX ( )

+ " y= " + mE.getY( ));

}

}

public static void main ( ) // Главная функция

{

MainClass mC= new MainClass ( );

mC.show ( );

}

}

/*

Result:

При каждом нажатии на клавишу мыши в прикладном окне выдаётся на консоль строка вида

Mouse: x= 10 y= 55, где x, y - координаты носика мыши

*/

В программах языка Java для обработки событий широко применяется анонимный класс, который не имеет имени, поскольку объект этого класса используется в конкретном контексте один раз, то есть, нет необходимости объявлять для него ссылку, так как этот объект более нигде не применяется.

В программе примера 9.5.4.2 в качестве аргумента используется не ссылка на объект класса приёмника как в примере 9.5.4.1, а описан особым образом анонимный класс. Конструкция параметра функции addMouseListener() вида

new MouseAdapter ( )

{. . .}

указывает компилятору о том, что имеет место анонимный класс. Компилятор создаёт объект анонимного класса MouseAdapter и передаёт его в качестве аргумента в функцию addMouseListener(). Как видим в примере 9.5.4.2, анонимные классы упрощают программу.

Пример 9.5.4.2. Обработка событий мыши на Java, используя внутренний анонимный класс.

///////////////

// Java и J# Вариант 8

import java.awt.*;

import java.awt.event.*;

// Класс прикладного окна

class MainClass extends Frame

{

public MainClass ( )

{

this.setSize (400, 200);

this.setTitle ("Hello");

// Примененить внутренний анонимный класс

this.addMouseListener (new MouseAdapter ( )

{

public void mousePressed (MouseEvent mE)

{

System.out.println ("Mouse: x= " + mE.getX ( )

+ " y= " + mE.getY( ));

}

});

}

public static void main ( ) // Главная функция

{

MainClass mC= new MainClass ( );

mC.show ( );

}

}

/*

Result:

При каждом нажатии на клавишу мыши в прикладном окне выдаётся на консоль строка вида

Mouse: x= 10 y= 55, где x, y - координаты носика мыши

*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]