Sunteți pe pagina 1din 4

Utilizare a tast a t u rii in Java

In Java, fiecar e compo n e n t a est e gen er a t o a r e de eveni m e n t e . Printre ace s t e a se num a r a si eveni m e n t el e gen er a t e de apa s a r e a tast elor. O compo n e n t a produc e eveni m e t e referitoar e la tast a t u r a n mo m e n t ul n car e est e activa, mai bine zis n mo m e n t ul n car e est e tinta intrarii de la tast a t u r a (are InputFocus . O compo n e n t a prime s t e controlul tast a t u rii prin una din met o d el e ! apelul e"plicit al met o d ei RequestFocus() al clasi printr# un clic$ de mous e pe supr afa t a sa prin trec er e a de la o compo n e n t a la alta cu utiliz%nd tast a <Tab> (ciclare sau combin a ti a <Shift>+<Tab> (ciclar e n ordine invers a & compo n e n t a la car e se opres t e ciclar e a est e cea care va primi controlul Obs'! Ordine a n car e se face ciclar e a est e det er mi n a t a de ordine a n car e s# au ada u g a t compo n e n t e l e n cont ain e r e si cont ain er el e n fere a s t r a. (iecar e compo n e n t a are astfel asociat a o valoar e unica ! tab order Obs)! *ompon e n t el e pentr u car e met o d a boolean isFocusTraversable() retur n e a z a false sunt ignor at e n proce s ul de ciclar e prin inter m e di ul tast ei <tab> . +le pot totusi sa devina tint a intrarii de la tast a u r a prin una din celelat e doua met o d e . (olosire a eve ni m e n t el or gen er a t e de o compo n e n t a la action ar e a unor tast e se realize az a prin inter m e di ul clasei Key vent si interfet ei Key!istener" *lasa #ava"a$t"event"Key vent ,ariabile *onst a n t e prin inter m e di ul caror a sunt referit e tast el e
%K&S'(FT %K&C)*TR)! %K& *T R %K&,+CK&S-+C %K&T+, %K&C+-S&!)CK %K&+!T

Component

%K&*./&!)CK %K&S-+C %K&.%K&0)1* %K&-+2 &.- %K&-+2 &0)1* %K&F34 """4 %K&F35 %K&*./-+064 """4 %K&*./-+07 %K&+4 """4 %K&8 %K&64 """4 %K&7 99etc

%K&! FT %K&')/

%K&R(2'T %K& *0

-etod e
boolean is+ctionKey( ) char :etKeyChar( ) voi; setKeyChar( char <eyChar ) int :etKeyCo;e( ) voi; setKeyCo;e( int <eyCo;e ) static #ava"lan:"Strin: :etKey/o;ifiersTe=t( int mo;ifiers ) Returnea>a numele unui mo;ificator ? Shift4 Ctrl+Shift4 etc" static #ava"lan:"Strin: :etKeyTe=t( int <eyCo;e ) Returnea>a un sir cu numele tastei ? ')/ 4 F34 etc" voi; set/o;ifiers( int mo;ifiers )

-etod el e pe care treb ui e sa le imple m e n t e z e obiect ul rece p t or care ascult a eve ni m e n t el e produs e de apa s a r e a tast elor pentr u o anu mi t a compo n e n t a sunt specificat e de interfat a Key!istener
public interface KeyListener extends java.util.EventListener @ 99 /eto;e public voi; <eyType;( #ava"a$t"event"Key vent e )A public voi; <ey-resse;( #ava"a$t"event"Key vent e )A public voi; <eyRelease;( #ava"a$t"event"Key vent e )A B

Obs! .iferent a ntre <eyType; si <ey-resse; est e ca primul eveni m e n t est e gen er a t de apa s a r e a unei tast e urm a t a de eliber ar e a ei, n timp ce al doilea doar de apa s a r e a tast ei. /sadar, struct ur a gen er al a a unei compo n e n t e care gen er e a z a eveni m e n t e referito ar e la tast a t u r a si care nec e sit a prelucr ar e est e !
class Componenta @ 99""" Receptor r C ne$ Receptor()A this"a;;Key!istener(r)A 99""" B

class Receptor implements Key!istener @ 99""" 99/eto;ele interfetei Key!istener 99""" B

+"emplu # depla s a r e a unui te"t pe ecra n cu a0utorul tast elor


import #ava"a$t"DA import #ava"a$t"event"DA public class TestKeys @ public static voi; main(Strin: ar:sst) @ Fereastra f C ne$ Fereastra(ETest lucru cu tastaturaE)A 0esen ; C ne$ 0esen()A ;"setSi>e(ne$ 0imension(F664 F66))A f"a;;(;)A f"pac<()A f"sho$()A B B 99Componenta ;e ;esenare class 0esen e=ten;s Canvas implements Key!istener @ Strin: te=t C ETest KeyEA -oint posA public 0esen() @ this"a;;Key!istener(this)A pos C ne$ -oint(364 36)A B public voi; paint(2raphics :) @ :";ra$Strin:(te=t4 pos"=4 pos"y)A B 99meto;ele interfetei Key!istener public voi; <eyType;(Key vent e) @B public voi; <ey-resse;(Key vent e) @ int <eyCo;e C e":etKeyCo;e()A s$itch (<eyCo;e) @ case Key vent"%K&! FT ? pos"= GC case Key vent"%K&R(2'T? pos"= +C case Key vent"%K&.- ? pos"y GC case Key vent"%K&0)1* ? pos"y +C B B public voi; <eyRelease;(Key vent e) @B B class Fereastra e=ten;s Frame implements 1in;o$!istener @ public Fereastra(Strin: titlu) @ super(titlu)A this"a;;1in;o$!istener(this)A B 99meto;ele interfetei 1in;o$!istener

36A 36A 36A 36A

repaint()A repaint()A repaint()A repaint()A

brea<A brea<A brea<A brea<A

public public public public public public public B

voi; voi; voi; voi; voi; voi; voi;

$in;o$)pene;(1in;o$ vent e) @B $in;o$Closin:(1in;o$ vent e) @System"e=it(6)AB $in;o$Close;(1in;o$ vent e) @B $in;o$0eiconifie;(1in;o$ vent e) @B $in;o$(conifie;(1in;o$ vent e) @B $in;o$+ctivate;(1in;o$ vent e) @B $in;o$0eactivate;(1in;o$ vent e) @B

S-ar putea să vă placă și