
- •Програмне забезпечння мережних технологій
- •Лабораторна робота №1
- •3. Вказівки до виконання роботи
- •4. Послідовність виконання роботи
- •Завдання до лабораторної роботи
- •6 Контрольні питання
- •Лабораторна робота №2
- •Побудова аплетів
- •1.1. Найпростіші аплети
- •2. Опрацювання подій в аплетах
- •3. Вказівки до виконання роботи
- •4. Послідовність виконання роботи
- •Завдання до лабораторної роботи
- •6. Контрольні питання
- •Лабораторна робота №3
- •1. Потоки в java
- •2. Вказівки до виконання роботи
- •3. Послідовність виконання роботи
- •4.Завдання до лабораторної роботи
- •5. Контрольні питання
- •Лабораторна робота №4
- •1.Завантаження драйверів баз даних
- •1.2. Підключення до бази даних
- •2. Послідовність виконання роботи
- •3. Завдання до лабораторної роботи
- •4. Контрольні питання
- •Лабораторна робота №5
- •1. Класи клієнтів
- •2. Класи серверів
- •3. Вказівки до виконання роботи
- •4. Послідовність виконання роботи
- •5.Завдання до лабораторної роботи
- •1.2. Контейнери
- •2. Вказівки до виконання роботи
- •3. Послідовність виконання роботи
- •4.Завдання до лабораторної роботи
- •4. Контрольні питання
- •Лабораторна робота №7
- •1. Опис класів
- •3. Вказівки до виконання роботи
- •3. Послідовність виконання роботи
- •4.Завдання до лабораторної роботи
- •4. Контрольні питання
- •Література
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>