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

Из предыдущего раздела явствует, что для подписки приёмника прослушивания на событие мыши необходимо в качестве типа источника события Type в общей записи

public void аddTypeListener (TypeListener tL);

взять Mouse. Полученная функция

public void аddMouseListener (MouseListener tL);

применена в примере 9.5.2.

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

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

// Java и J# Вариант 2 (Вариант 1 смотрите в примере 10.4.3)

import java.awt.*;

import java.awt.event.*;

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

public class MainClass extends Frame implements MouseListener

{

// Предопределённые обработчики интерфейса MouseListener

public void mouseClicked (MouseEvent mE){}

public void mouseEntered (MouseEvent mE){}

public void mouseExited (MouseEvent mE){}

public void mouseReleased (MouseEvent mE){}

// Выполнить предопределённый обработчик 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.setSize (new Dimension (400, 200));

mC.setTitle ("Hello");

mC.show ( );

mC.addMouseListener(mC);

}

}

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

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

import java.awt.*;

import java.awt.event.*;

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

public class MainClass extends Frame implements MouseListener

{

public MainClass ( )

{

this.setSize (new Dimension (400, 200));

this.setTitle ("Hello");

this.addMouseListener (this);

}

// Предопределённые обработчики интерфейса MouseListener мыши

public void mouseClicked (MouseEvent mE){}

public void mouseEntered (MouseEvent mE){}

public void mouseExited (MouseEvent mE){}

public void mouseReleased (MouseEvent mE){}

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

public void mousePressed (MouseEvent mE)

{

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

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

}

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

{

MainClass mC= new MainClass ( );

mC.show ( );

}

}

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

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

import java.awt.*;

import java.awt.event.*;

// Класс объекта-приёмника событий

class Listener implements MouseListener

{

// Предопределённые обработчики интерфейса MouseListener мыши

public void mouseClicked (MouseEvent mE){}

public void mouseEntered (MouseEvent mE){}

public void mouseExited (MouseEvent mE){}

public void mouseReleased (MouseEvent mE){}

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

public void mousePressed (MouseEvent mE)

{

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

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

}

}

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

public class MainClass extends Frame

{

public MainClass ( )

{

Listener l= new Listener ( ); // Создать объект приёмника

this.setSize (new Dimension (400, 200));

this.setTitle ("Hello");

this.addMouseListener (l); // Подписать приёмник l событий

}

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

{

MainClass mC= new MainClass ( );

mC.show ( );

}

}

/*

Result:

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

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

*/

В примере 9.5.2 рассмотрены несколько вариантов реализации обработки события мыши.

Прежде всего, обратим внимание, что в отличие от предопределённого обработчика mouseDown() примера 9.4.3 (вариант 1) обработчики мыши интерфейса MouseListener отличаются не только именами, но также возвращаемым значением и списком параметров. Интерфейс MouseListener требует реализовать в классе MainClass, наследующий этот интерфейс, всех обработчиков. Непотребные обработчики имеют пустые тела. И только необходимый нам обработчик mousePressed() выдаёт на консоль координаты носика мыши.

Во втором и третьем вариантах программы функция addMouseListener() добавляет объект приемника событий к источнику событий. Поскольку приёмник событий (объект окна класса MainClass), содержащий обработчики, является и источником событий, генерирующим событие (при нажатии на мышь в окне генерируются события мыши), приходится функцию, ссылающуюся в аргументе на объект окна, применить к тому же окну:

MainClass mC= new MainClass ( ); // Вариант2. В функции main()

mC.addMouseListener (mC);

this.addMouseListener (this); // Вариант3. В конструкторе MainClass()

В варианте 4 программы предложен отдельный класс Listener приёмника, наследующий интерфейс MouseListener и реализующий все функции этого интерфейса. Функции mouseClicked(), mouseEntered(), mouseReleased() и mouseExited() реализованы с пустыми телами, а функция mousePressed() выдаёт на консоль координаты носика мыши. В конструкторе класса MainClass источника создаётся объект приёмника, наследующий интерфейс MouseListener, и этот объект приёмника добавляется к источнику (this) с помощью функции addMouseListener ().

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