- •Лабораторна робота 5
- •Теоретичні відомості
- •Хід роботи
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Applet.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Import java.Awt.*;
- •Контрольні запитання
Import java.Awt.*;
Import java.Applet.*;
import java.net.URL;
public class Base extends Applet {
public void paint(Graphics g) {
String message;
URL url = getCodeBase();// одержати базу коду
message = "Code base: " + url.toString();
g.drawString(message, 10, 20);
url = getDocumentBase();// одержати базу документу
message = "Document base: " + url.toString();
g.drawString(message, 10, 40);
}
}
Інколи виникає необхідність оброблення подій миші(натискування, переміщення і т.д.). Для цього в Java передбачені інтерфейси MouseListener та MouseMotionListener. Наступний приклад представляє цей процес:
Import java.Applet.*;
Import java.Awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public class MouseEvents extends Applet implements MouseListener,
MouseMotionListener {
String msg = "";
int mouseX = 0, mouseY = 0;// координати маніпулятора "миш"
public void init() {
addMouseListener(this);// регістрація себе як блоку прослуховування
// mouse-подій
addMouseMotionListener(this);// регістрація себе як блоку
// прослуховування MouseMotion-подій
}
// Обробка перетягування миші
public void mouseDragged(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "*";
showStatus("Dragging mouse at " + mouseX + ", " + mouseY);
repaint();
}
// Обробка переміщення миші
public void mouseMoved(MouseEvent me) {
showStatus("moving mouse at " + me.getX() + ", " + me.getY());
}
public void paint(Graphics g) {
g.drawString(msg, mouseX, mouseY);
}
// Обробка кліку миші
public void mouseClicked(MouseEvent me) {
mouseX = 0;
mouseY = 10;
msg = "Mouse clicked.";
repaint();
}
// Обробка вводу миші в області вікна
public void mouseEntered(MouseEvent me) {
// збереження координат
mouseX = 0;
mouseY = 10;
msg = "Mouse entered.";
repaint();
}
public void mouseExited(MouseEvent me) {
mouseX = 0;
mouseY = 10;
msg = "Mouse exited.";
repaint();
}
// Обробка натискання кнопки
public void mousePressed(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "Down";
repaint();
}
// Обробка вивільнення кнопки
public void mouseReleased(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "Up";
repaint();
}
}
Щоб обробляти події з клавіатури, використовується така сама архітектури, що і в попередньому прикладі з подіями миші. Єдиною різницею є те, що необхідно використовувати інтерфейс KeyListener. Коли клавіша натиснута, то генерується подія KEY_PRESSED, а це приводить до запиту оброблювача подій KeyPressed(). Коли клавіша відпускається, то генерується подія KEY_RELEASED і виконується оброблювач KeyReleased(). Якщо натискуванням клавіші згенерований символ, то посилається повідомлення про подію KEY_TYPED і викликається оброблювач KeyTyped(). Таким чином кожний раз коли користувач натискає клавішу, то генерується як мінімум дві і часто і три події. Наступний програмний код демонструє ввід з клавіатури. Він відображає у вікні аплет-символи клавіш і показує стан натиску/відпуску кожної клавіші у вікні стану:
