Посмотреть пример апплета, разработанного на данном уроке, можно здесь.
Сегодня мы займемся обработкой событий. События в системе Windows и других многозадачных системах могут быть разные: нажатие на кнопочку мыши, нажатие на кнопку на клавиатуре, перемещение указателя мыши и другие. Java-апплеты могут перехватывать такие события и как то реагировать на на них. Для демонстрации этой возможности Java попробуем создать апплет, в котором можно рисовать мышкой кривую линию:
Для перехвата событий мыши в данном примере мы будет использовать предопределенные методы класса Applet mouseDown и mouseMove:
Code
import java.awt.*;
import java.applet.*;
public class DrawExample extends Applet {
Point startPoint;
Point points[];
int numPoints;
boolean drawing;
public void init() {
startPoint= new Point(0,0);
points=new Point[1000];
drawing=false;
resize(300,400);
}
public void paint(Graphics g) {
int oldX=startPoint.x;
int oldY=startPoint.y;
for(int i=0; i<numPoints; ++i) {
g.drawLine(oldX, oldY, points[i].x,points[i].y);
oldX=points[i].x;
oldY=points[i].y;
}
}
public boolean mouseDown(Event evt, int x, int y) {
if(!drawing) {
startPoint.x=x;
startPoint.y=y;
}
drawing=!drawing;
return true;
}
public boolean mouseMove (Event evt, int x, int y) {
if((drawing)&&(numPoints<1000)) {
points[numPoints]=new Point(x,y);
++numPoints;
repaint();
}
return true;
}
}
Работает этот апплет следующим образом: при нажатии на кнопочку мыши меняется режим (переменная drawing), при перемещении мыши, если у нас режим drawing включен, запоминается позиция, куда была перемещена мышь. В методе paint, который отвечает за прорисовку апплета, мы просто соединяем эти точки линией.