Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


TRATAREA CLICURILOR DE MOUSE

java



+ Font mai mare | - Font mai mic



TRATAREA CLICURILOR DE MOUSE

  1. Evenimentele mouse down si mouse up

La executarea unui clid de mouse apar de fapt doua evenimente:mouse down, la apasarea butonului si mouse up la eliberarea butonului mouseului.

Semnatura metodei pentru evenimentul mouse down este:



public boolean mouseDown(Event evt, int x, int y)

Metoda - ca si mouseUp() de altfel - primeste trei argumente:evenimentul si coordonatele x si y unde a aparut evenimentul.

Argumentul evt este o instanta a clasei Event.Toate evenimentele genereaza o instanta a clasei Event care contine informatii privind locul si perioada cand a avut loc evenimentul, tipul sau si alte informatii.

De exemplu putem crea o metoda care sa afiseze coordonatele punctului unde s-a executat un clic de mouse:

public boolean mouseDown(Event evt, int x, int y)

Trebuie metionat ca aceasta metoda returneaza o valoare booleana, spre deosebire de majoritatea metodelor folosite pana acum.Valoarea de retur true sau false a unei metode de tratare de evenimente determina daca o anumita componenta poate intercepta evenimentul sau daca trebuie sa il transmita mai departe altor componente.Regula este ca daca metoda intercepteaza si trateaza evenimentul ea trebuie sa returneze true ; daca metoda ignora evenimentul ea trebuie sa returneze false pentru ca celelalte componente ale interfetei sa aiba sansa de a trata ele evenimentul.

In listingul de mai jos vom vedea un applet care va trata apasarea mouseului - la fiecare clic de mouse in fereastra este desenata o pata, pana la totalul de maxim 15 pete:

import java.awt.*;

public class Pete extends java.applet.Applet

public boolean mouseDown(Event evt, int x, int y)

else

}

void adaugaPata(int x, int y)

public void paint(Graphics ecran)

}

}

  1. Dublu clicuri

Clasa Event din Java poseda o variabila denumita clickCount care pastreaza aceasta informatie.clickCount este o variabila intreaga care contine numarul de clicuri consecutive aparute - consecutivitatea este determinata de sistemul de operare sau de hardwareul mouseului.In cazul in care vrem sa tratam ca evenimente clicuri multiple trebuie sa testam valoarea variabilei sus amintite in corpul metodei noastre:

public boolean mouseDown(Event evt, int x, int y)

}

Metoda mouseDown() este de fapt apelata pentru fiecare clic in parte.

Ca sa fie mai clar sa luam exemplul:

public boolean mouseDown(Event evt, int x, int y)

Daca rulam un program care implementeaza aceasta metoda si executam un triplu clic rezultatul obtinut va fi:

Numar de clicuri:1

Numar de clicuri:2

Numar de clicuri:3

  1. Miscarile mouseului

AWT defineste doua tipuri distincte de miscari ale mouseului:tragerea sa - miscarea se face cu butonul semnificativ apasat, si miscarea simpla - cu butonul neapasat.Evenimentele de mai sus sunt interceptate si tratate cu ajutorul metodelor mouseDrag() si mouseMove().

Metoda mouseMove() seamana mult cu metodele care tratau clicurile de mouse:

public boolean mouseMove(Event evt, int x, int y)

Meotda mouseDrag() are o semnatura similara si mai trebuie sa mentionam ca in ambele metode argumentele pentru coordonatele x si y reprezinta noua pozitie a mouseului si nu cea initiala.

Metodele mouseEnter() si mouseExit() sunt apelate cand mouseul patrunde sau paraseste un applet sau o portiune a acestuia.Ambele metode au semnaturi similare cu cele intalnite mai inainte, coordonatele x si y referindu-se aici la puctul unde mouseul a patruns sau respectiv a parasit appletul:

public boolean mouseEnter(Event evt, int x, int y)

Pentru a utiliza aceste evenimente si a le trata vom prezenta un exemplu de applet care traseaza linii drepte pe ecran prin tragerea mouseului dintr-un punct in altul.Numarul de linii va fi restrictionat la 20:

import java.awt.Graphics;

import java.awt.Color;

import java.awt.Event;

import java.awt.Point;

public class Linii extends java.applet.Applet

public boolean mouseDown(Event evt, int x, int y)

else

}

public boolean mouseUp (Event evt, int x, int y)

else return false;

}

public boolean mouseDrag (Event evt, int x, int y)

else return false;

}

void adaugareLinie(int x,int y)

public void paint(Graphics g)

g.setColor(Color.red);

if (pctCurent!=null)

g.drawLine(pctInitial.x, pctInitial.y, pctCurent.x, pctCurent.y);

}

}

Pentru a ajuta la intelegerea programului vom schita pe scurt si un comentariu al diferitelor elemente ce apar in cadrul sursei de mai sus.

Programul nostru memoreaz nu valori individuale ale coordonatelor ci obiecte Point.Tabloul inceput memoreaza punctele care reprezinta punctele de inceput ale liniilor deja desenate.Tabloul final memoreaza punctele de final ale liniilor deja desenate.Variabila pctInitial memoreaza punctul de start al liniei pe care o desenam la momentul curent iar pctCurent retine punctul final al liniei desenate curent.Variabila linieCrt memoreaza numarul de linii desenate pentru a nu se depasi valoare MAXLINII si pentru a se cunoaste linia din tablou care se va accesa in continuare.

Evenimentele tratate in applet sunt trei:mouseDown() pentru a stabili punctul de start al liniei curente, mouseDrag() pentru a desena linia curenta pe masura ce este desenata si mouseUp() pentru a se stabili punctul final al liniei desenate.

Pe masura ce mouseul este miscat pentru a trasa o noua linie appletul o deseneaza pe aceasta astfel incat noua linie se va deplasa de la punctul de pornire si pana la punctul mobil reprezentat de mouse ; evenimentul mouseDrag() memoreaza punctul curent ori de cate ori mouseul se deplaseaza asa ca aceasta metoda poate fi folosita pentru a reimprospata afisarea liniei curente dand astfel senzatia de animatie a acestei liniii.

Noua linie desenata se va adauga in tabloul de liniii doar dupa eliberarea mouseului - la interventia metodei mouseUp() care apeleaza metoda adaugareLinie().

Aceasta metoda adaugareLinie() actualizeaza tabloul de linii - de fapt tablourile de puncte de inceput si de sfarsit ale liniilor dupa care appletul este redesenat pentru a tine cont de aparitia ultimei linii desenate.Tot in cadrul acestei metode se seteaza variabilele pctCurent si pctInitial la null deoarece linia desenata curent a fost finalizata in momentul apelarii acestei metode.Prin setarea aceasta putem apoi testa aceasta valoare null in metoda paint() pentru a vedea daca trebuie trasata o nou linie.

Desenarea appletului presupune desenarea tuturor liniilor stocate in tablourile programului precum si desenarea liniei curente ale carei capete sunt in pozitiile pctInitial si respectiv pctCurent.

Dupa cum am metionat putin mai sus in cadrul metodei paint() intai testam daca valoarea lui pctCurent este null.Daca da, atunci appletul nu se afla in timpul desenarii unei linii deci nu va avea nici un motiv sa traseze o linie care nu exista.Prin testarea variabilei pctCurent - si prin posibilitatea setarii ei la null in metoda adaugareLinie() - putem desena doar ceea ce este necesar.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 864
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved