Якщо виникає подія, керування одержує метод handleEvent із класу Component ( клас Applet є його дочірнім класом). Програма може перевизначити метод handleEvent і обробляти події самостійно. Простіший шлях полягає у виклику методів опрацювання подій від миші чи клавіатури.
Наведемо приклд аплету LineDraw, в якому демонструються основні прийоми опрацювання подій від миші. У вікні аплета можна малювати прямі лінії з їх координатами біля кінців ліній. Для цього необхідно встановити курсор у початкову точку лінії, натиснути клавішу миші і потім, не відпускаючи її, перемістити курсор у кінцеву точку. Після відпускання клавіші миші координати лінії будуть збережені аплетом у масиві і відбудеться перемальовування вікна аплета. При збільшенні кількості ліній, аплет буде заповнювати масив координатами ліній. При перемальовуванні вікна метод paint перемалює всі лінії спочатку на основі координат, збережених в масиві. Для стирання змісту вікна аплета необхідно зробити подвійний клік у вікні. З масиву координат ліній будуть вилучені всі елементи.
Текст аплету LineDraw наведено з коментарями:
import java.applet.*;
import java.awt.*;
import java.util.*;// імпортуються класи з пакетів
public class LineDraw extends Applet{
Dimension dmDown;// поля для збереження координат лінії (початок )
Dimension dmUp;// поля для збереження координат лінії (кінець лінії)
Dimension dmPrev;// Координати кінця старої лінії
boolean bDrawing; // стан аплета: малювання лінії - true, інший- false
Vector lines;// об’єкт для зберігання координат лінійpublic String getAppletInfo( ) {//метод для повернення назви аплетуreturn "Name: LineDraw"; } public void init(){//ініціалізація аплету bDrawing = false;lines = new Vector(); } public void paint(Graphics g) { // метод малює лініїDimension dimAppWndDimension = getSize();setBackground(Color.yellow);g.setColor(Color.black); g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); for (int i=0; i < lines.size(); i++) { Rectangle p = (Rectangle)lines.elementAt(i); g.drawLine(p.width, p.height, p.x, p.y); g.drawString("<" + p.width+","+p.height+">",p.width,p.height); g.drawString("<"+p.x+","+p.y+">",p.x,p.y); } bDrawing = false; } public boolean mouseDown(Event evt,int x,int y) { if(evt.clickCount > 1) { lines.removeAllElements(); repaint(); return true; } dmDown = new Dimension(x, y); //зберігання поточних координат курсору dmPrev = new Dimension(x, y);bDrawing = false;return true;} public boolean mouseUp(Event evt, int x, int y){ if(bDrawing) {dmUp = new Dimension(x, y);lines.addElement( new Rectangle(dmDown.width, dmDown.height, x, y)); // додавання нового елементу в масив linesrepaint();bDrawing = false; //скидання ознаки малювання}return true; } public boolean mouseDrag(Event evt, int x, int y) {Graphics g = getGraphics();bDrawing = true;g.setColor(Color.yellow); // стирання лінії - малювання кольором фонуg.drawLine(dmDown.width,dmDown.height,dmPrev.width,dmPrev.height);g.setColor(Color.black); // малювання лінії чорним кольором кольором g.drawLine(dmDown.width, dmDown.height, x, y); dmPrev = new Dimension(x, y); // зберігання координат лінії return true;}public boolean mouseMove(Event evt, int x, int y) { bDrawing = false; //відключає режим малюванняreturn true; }}
Вихідний текст документа HTML( файл LineDraw.html), підготовленого системою JavaWorkshop, представлений нижче.
<applet name="LineDraw"
code="LineDraw"
codebase="file:/с:/sun/java/LineDraw"
width="500"
height="600"
align="Top"
alt="With a java-enabled browser, you would see an applet">