Движение на мишката

Мишката винаги генерира събития, докато се движи. Тези събития могат да се използват и да се реагира на тях. Важен момент, който трябва да имате предвид при работа със събития за движение на мишката, е плъзгането. Плъзгането е преместване на елементи от едно място на екрана на компютъра на друго, докато се задържа бутонът на мишката.

Методите за обработка на събития за движение на мишката са описани в интерфейса на 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 ()

// други функции за инициализация>

// други методи и променливи

MouseEvent public

Фигура: 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";