«События». Обработка событий в java 2. Метод handleEvent(), страница 3

В свою очередь в класс прослушивания объявляется объект основного класса, который и используется в дальнейшем для передачи информации о событиях методам основного класса (для вызовов методов-обработчиков событий основного класса).

Так для обработки перемещения мыши в модели делегирования событий можно записать (смотри предыдущий пример вывода сообщений).

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class MouseEvents extends Applet

{         String msg="";  int pos_x=0, pos_y=0;

public void init ()

{ My_Listener my_contorl=new My_Listener(this);

addMouseListener (my_contorl);

addMouseMotionListener(my_contorl); }

public void paint(Graphics g)

{

g.drawLine(pos_x-3,pos_y-11,pos_x+80,pos_y-11);

g.drawLine(pos_x-3,pos_y-11,pos_x-3,pos_y+3);

g.drawLine(pos_x-3,pos_y+3,pos_x+80,pos_y+3);

g.drawLine(pos_x+80,pos_y-11,pos_x+80,pos_y+3);

g.drawString("X="+pos_x+"; Y="+pos_y, pos_x,pos_y);

}

public void mouse_move (int x, int y)

{ pos_x = x; pos_y =y;

repaint ();

}

//далее записать все необходимые методы действий в апплете, в случае

// появления какого-либо события класс прослушивания

class My_Listener implements MouseListener, MouseMotionListener

{MouseEventsmy_applet;   //Объект основного класса

//для передачи события методам

public My_Listener (MouseEvents m_a)        

{ }                          //переопределение конструктора

public void mouseMoved (MouseEvent m_e) //получитьсобытие

//mouseMoved

{my_applet.mouse_move (m_e.getX(), m_e.getY());}

//далее реализовать все методы интерфейсов вызовом

//метотов основного класса

public void mouseExited(MouseEvent me)               {}

public void mousePressed(MouseEvent m_e)           {}

public void mouseEntered(MouseEvent me)            {}

public void mouseReleased(MouseEvent me)           {}

public void mouseDragged(MouseEvent me)           {}

public void mouseClicked(MouseEvent me)             {}

}

Блоком прослушивания может быть объявлен и сам источник событий. Например, для обработки событий от мыши можно определить следующее:

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class MouseEvents extends Applet implements MouseListener, MouseMotionListener

{         String msg="";  int pos_x=0, pos_y=0;

//My_Listen  my_control;

public void init ()

{ addMouseListener (this);

addMouseMotionListener(this); //регистрация себя как блока

}         //прослушиваниясобытий

public void mouseClicked(MouseEvent me)

{ pos_x=0; pos_y=40;  //обработка щелчка мыши

msg="Mouse clicked";

repaint();}

public void mouseEntered(MouseEvent me)

{ pos_x=0; pos_y=40;  //обработка ввода мыши в окно

msg="Mouse entered";

repaint();}

public void mouseExited(MouseEvent me)

{ pos_x=0; pos_y=40;  //обработка ввода мыши в окно

msg="Mouse exited";

repaint();}

public void mousePressed(MouseEvent me)

{ pos_x=me.getX(); pos_y=me.getY();    //обработка ввода мыши в окно

msg="Mouse Pressed";

repaint();}

public void mouseReleased(MouseEvent me) //освобождение кнопки

{ pos_x=me.getX(); pos_y=me.getY();    //обработка ввода мыши в окно

msg="Mouse Up";

repaint();}

public void mouseDragged(MouseEvent me) //перетаскивание Мыши

{ pos_x=me.getX(); pos_y=me.getY();   

msg="MouseDragged";