Движение на мишката
Мишката винаги генерира събития, докато се движи. Тези събития могат да се използват и да се реагира на тях. Важен момент, който трябва да имате предвид при работа със събития за движение на мишката, е плъзгането. Плъзгането е преместване на елементи от едно място на екрана на компютъра на друго, докато се задържа бутонът на мишката.
Методите за обработка на събития за движение на мишката са описани в интерфейса на MouseMotionListener. Интерфейсът дефинира два метода:
public void mouseDragged (MouseEvent evt); public void mouseMoved (MouseEvent evt);
Методът mouseDragged се извиква, когато мишката се движи, докато бутонът е натиснат. Ако бутонът не е натиснат по време на движение на мишката, тогава се извиква методът mouseMoved. Параметърът evt е събитие от тип MouseEvent. Този параметър съдържа информация като координатите на курсора на мишката. Докато мишката се движи, един от тези методи ще се извиква отново и отново и отново. Интерфейсът е дефиниран отделно, за да остави възможността да се използват събитията на мишката, описани в интерфейса на MouseListener, без да се извиква, без да са необходими методи за обработка на събития, свързани с движението на мишката.
За да обработвате събития за движение на мишката, трябва да създадете обект, който реализира интерфейса MouseMotionListener, и да регистрирате този обект като слушател за събития с движение на мишката. За това се извиква методът addMouseMotionListener. Този обект ще прослушва събитията mouseDragged и mouseMoved, свързани с компонента, където е регистриран слушателят. В повечето случаи обектът слушател също така изпълнява интерфейса MouseListener, така че слушателят да може да реагира и на събития на мишката. За обекта drawingSurface дефиницията на клас на аплет е осъществима, например, както следва:
impo rt j ava.a wt. *; импортиране на java.awt.event. *;
публичен клас Mouser разширява JApplet
реализира MouseListener, MouseMotionListener
public void init ()
// други функции за инициализация>
// други методи и променливи

Фигура: 1.19. Движение на мишката
Кодът на аплета се съдържа във файла MouseMove.java (Листинг 1.18) и аплетът се зарежда в браузъра с помощта на HTML страницата MouseMove.html (Листинг 1.19). Когато преместите показалеца на мишката върху аплета, до курсора се появява изображение, съответстващо на текущите координати на курсора спрямо компонента. В допълнение, аплетът показва и последното настъпило събитие, ако са били натиснати модифициращите клавиши, натиснати, когато е настъпило това събитие (фиг. 1.19).
Листинг 1.18. MouseMove.java файл
Прост аплет, който показва координати на мишката. Не се използва двойно буфериране, така че екранът трепти леко.
impo rt j ava.awt. *; impo rt j ava.awt.event. *; внос javax.swing. *;
публичен клас MouseMove разширява JApplet
реализира MouseListener, MouseMotionListener < Display display;
int mouse_x, mouse_y; // позиция на мишката
String modifierKeys = "; // ако не е нула, тогава натиснати клавиши // модификатори
String eventType = null; // ако не е null, тогава вида на последния
// мишка събития публичен клас Display разширява JPanel < I*
Класът, който задава платното за изчертаване на аплета. Тук се задават и променливи на мишката: mouse_x, mouse_y, modifierKeys, eventType.
g.drawRect (0,0, getSize (). ширина - 1, getSize (). височина - 1); g.drawRect (1,1, getSize (). ширина - 3, getSize (). височина - 3); g.setColor (Color.red); if (eventType == null)
11 ако е нула, тогава не е имало събития на мишката // и не трябва да се показва информация
g.drawstring ("Тип събитие на мишката:" + eventType, 6, 18); ако (modifierKeys.length ()> 0)
g.drawstring ("Модификатор ключове:" + modifierKeys, 6, 34); g.setColor (Color.black);
g.drawstring ("(" + mouse_x + "," + mouse_y + ")",
public void init ()
// задаване на цвят на фона, регистриране на слушатели
display = нов Display ();
void setInfo (MouseEvent evt)
// задаване на информация за събитието да се показва
modifierKeys + = "Shift"; if (evt.isControlDown ())
modifierKeys + = "Контрол"; if (evt.isMetaDown ())
modifierKeys + = "Мета"; if (evt.isAltDown ()) modifierKeys + = "Alt";
// Внедряване на всички интерфейсни методи MouseListener // и MouseMotionListener.
// Всеки метод задава стойност за eventType
// и извиква setInfo, за да получи информация за показване, public void mousePress (MouseEvent evt) < eventType = "mousePressed";
public void mouseReliased (MouseEvent evt) < eventType = "mouseReleased";
public void mouseClicked (MouseEvent evt) < eventType = "mouseClicked";
public void mouseEntered (MouseEvent evt) < eventType = "mouseEntered";