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

showStatus("Dragging mouse at : " +pos_x+","+pos_y);

repaint();}

public void mouseMoved(MouseEvent me) //перемещение мыши

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

msg="MouseMoved";

showStatus("Moved  at : " +pos_x+","+pos_y);

repaint();}

public void paint(Graphics g)

{g.drawString(msg,pos_x,pos_y); }}


/*Пример обработки событий по первой модели (уже устаревшей, но поддерживаемой */

import java.awt.*; //подключение пакета оконного пользовательского

               //интерфейса

import java.applet.*;    //подключение библиотеки апплета

public class Mouse extends Applet //наследованиеоткласса Applet

{int pos_x=218, pos_y=245;

//начальная позиция окна вывода координат

     //в принципе можно и не инициализировать, тогда имеем 0,0

Button button_1;

public void init() //клас Applet вызываетметоды init()и start()

               //здесьметод init() переопределяется

{

setBackground(Color.gray);    //установкацветафона

setForeground(Color.red);     //установка цвета переднего плана,

                    //выводимые координаты -красного цвета

Label label_1=new Label("Обработка перемещений мыши",Label.LEFT);

add(label_1);

button_1= new Button("Close");     //Созданиеобъекта

button_1.reshape(10,10,100,40);    //прорисовка

add(button_1);           //добавление к контейнеру

//this.requestFocus();

}

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 boolean action(Event ev,Object arg)

{int a1,a2;

//можно обработать через свойство id и константу, сгенерир. управл. эл

if (ev.id==ev.ACTION_EVENT)

{showStatus("Клик_левыйнакнопке Cancel:id="+ev.id+"; A_E="+ev.ACTION_EVENT+"arg="+arg);

repaint();}

return true;

}

/*public boolean handleEvent(Event ev)

//можно обработать через главный обработчик

{    //главный обработчик

if (ev.target==button_1) //откуда пришло событие

{showStatus("Клик_левый на кнопке Cancel:X="+pos_x+"; Y="+pos_y);

repaint();return true;}

else

return super.handleEvent(ev);}    

*/

//если не от кнопки,

//то вернуть событие на обработку

/*if (ev.target instanceof Mouse)

mouseDown(ev,pos_x,pos_y);

return true;

}*/

public boolean mouseDown(Event ev, int x, int y)

{         //обработканажатиякнопкимыши

showStatus("Кликмышьюскоординатами: X="+pos_x+"; Y="+pos_y);

return true;

}

public boolean mouseMove(Event ev, int x, int y)

{    //обработка перемещения курсора мыши

pos_x=x;  //выбор координат в доступные переменные

pos_y=y;

repaint();

return true;

}

}

/*Удивительно, что название button_1 = Close закрывает окно без обработки*/

/* Далее текст странички для запуска апплета */

<HTML>

<HEAD>

<TITLE>Обработка событий</TITLE>

</HEAD>

<BODY>

<H2>Апплет на WWW странице</H2>

<APPLET

CODE="Mouse.class"

WIDTH=300

HEIGHT=250>

</APPLET>

<BODY/>

</HTML>

// Результат работы выглядит так