Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мережеві_технології_java_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
425.98 Кб
Скачать

2. Опрацювання подій в аплетах

Якщо виникає подія, керування одержує метод 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)); // додавання нового елементу в масив lines

repaint();

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">

</applet>

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