Olayları Yönetmek

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
Olayları Yönetmek
HandleEvent() yöntemi gerçekleşen olayın id numarasını dikkate alarak çagırır. Eğer id mesela Event.MOUSE.UP ise handleEvent() yontemi mouseUP yöntemini otomaikmen çagırır. Bu diger alt yöntemler içinde aynen gerçeklenir.handleEvent() yöntemi aslında bir üst yöntemdir. Ve diger alt yöntemlere ulaşmaya yarar.
HandleEvent() metodunun hiyerarşik yapısı aşagıdaki gibidir.

Event.MOUSE_ENTER mouseEnter(Event e,int x,int y)
Event.MOUSE_EXIT mouseExit(Event e,int x,int y)
Event.MOUSE_MOVE mouseMove(Event e,int x,int y)
Event.MOUSE_DOWN mouseDown(Event e,int x,int y)
Event.MOUSE_DRAG mouseDrag(Event e,int x,int y)
Event.MOUSE_UP mouseUp(Event e,int x,int y)
Event.KEY_PRESS keyDown(evt e,evt.key)
Event.KEY_ACTION keyDown(evt e,evt.key)
Event.KEY_RELEASE keyUP(evt e,evt.key)
Event.KEY_ACTION_RELEASE keyUp(evt e,evt.key)
Event.ACTION_EVENT action(Event e,Object sonuc)
Event.GOT_FOCUS gotFocus(event evt,Object sonuc)
Event.LOST_FOCUS lostFocus(event evt,Object sonuc)

Şimdi bu alt yöntemlerin ne işe yaradığını bir görelim.


mouseEnter(Event e,int x,int y) Mousun bileşene girerken ki x ve y koordinatları bulunabilir.

mouseExit(Event e,int x,int y) Mousun bileşeni terk ederken ki ki x ve y koordinatları bulunabilir.

mouseMove(Event e,int x,int y) Mousun eğer hiçbir tuşuna basmadan bileşen üzerinde hareket ettirirseniz mousun bileşen üzerindeki x ve y koordinatlarını bulabilirsiniz.


mouseDown(Event e,int x,int y) Mousu eğer devamlı olarak basılı tutarsanız mousun o anki bileşen üzerindeki x ve y koordinatlarını bulabilirsiniz.

mouseDrag(Event e,int x,int y) Mousun devamlı olarak basılı tutarsanız ve hareket ettirirseniz mousun o anki bileşen üzerindeki x ve y koordinatlarını bulabilirsiniz.

mouseUp(Event e,int x,int y) Mousu basılı durumdan bırakırsanız-çekerseniz mousun o anki bileşen üzerindeki x ve y koordinatlarını bulabilirsiniz.

keyDown(evt e,evt.key) Normal bir tuşa basıldığı anlaşılır.

keyUp(evt e,evt.key) Basılan normal tuşun bırakıldıgını gösterir.

action(Event e,Object sonuc) Bazı eylemlerin gerçeklendiğini belirtir. Eylemin gerçeklendiği bileşen ve eylemin kendisi bu metodla anlaşılabilir.

gotFocus(Event e,Object sonuc) Odaklanan bileşeni göstermektedir.

lostFocus(Event e,Object sonuc) Odağı kaldırılmış bileşeni göstermektedir.

Şimdi bu metodların en çok kullanılanlarıyla ilgili örnekleri inceleyelim. Birinin kullanımı anlaşılırsa digerlerin kullanımıda anlaşılmış olur.

Örnek Kod (1).



import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class olay extends Applet {
Label down,downxl,downyl,clicksayisi;
Label up,upxl,upyl;
Label move,movexl,moveyl;
Label enter,enterxl,enteryl;
Label exit,exitxl,exityl;

FlowLayout fl=new FlowLayout(FlowLayout.LEFT);

public **** init() {
setLayout(fl);
down=new Label("Mouse DOWN Olayinda----> ");
downxl=new Label("X Koordinati...: ");
downyl=new Label("Y Koordinati...: ");
clicksayisi =new Label("Click Sayisi..: ");
add(down); add(downxl); add(downyl); add(clicksayisi);

up=new Label("Mouse UP Olayinda----> ");
upxl=new Label("X Koordinati...: ");
upyl=new Label("Y Koordinati...: ");
add(up); add(upxl); add(upyl);

move=new Label("Mouse MOVE Olayinda----> ");
movexl=new Label("X Koordinati...: ");
moveyl=new Label("Y Koordinati...: ");
add(move); add(movexl); add(moveyl);

enter=new Label("Mouse ENTER Olayinda----> ");
enterxl=new Label("X Koordinati...: ");
enteryl=new Label("Y Koordinati...: ");
add(enter); add(enterxl); add(enteryl);

exit=new Label("Mouse EXIT Olayinda----> ");
exitxl=new Label("X Koordinati...: ");
exityl=new Label("Y Koordinati...: ");
add(exit); add(exitxl); add(exityl);

}//init metodunun sonudur....

public boolean mouseDown(Event e,int x,int y) {//mouse basili durumda...
downxl.setText("X Koordinati...: " + x);
downyl.setText("Y Koordinati...: " + y);
clicksayisi.setText("Click Sayisi.: " + e.clickCount);
showStatus("aloo..: "+e.id);
return true;
}//mouseDown metodunun sonudur...

public boolean mouseUp(Event e,int x,int y) {//mouse cekili durumda...
upxl.setText("X Koordinati...: " + x);
upyl.setText("Y Koordinati...: " + y);
showStatus("aloo..: "+e.id);
return true;
}//mouseUp metodunun sonudur...

public boolean mouseMove(Event e,int x,int y) {//mousun hiç bir tusuna basmadan hareket ettirilmesi...
movexl.setText("X Koordinati...: " + x);
moveyl.setText("Y Koordinati...: " + y);
return true;
}//mouseMove metodunun sonudur...

public boolean mouseEnter(Event e,int x,int y) {//mausun bilesene girerkenki konumu..
enterxl.setText("X Koordinati...: " + x);
enteryl.setText("Y Koordinati...: " + y);
return true;
}//mouseEnter metodunun sonudur...

public boolean mouseExit(Event e,int x,int y) {//mausun bilesene çikarkenki konumu..
exitxl.setText("X Koordinati...: " + x);
exityl.setText("Y Koordinati...: " + y);
return true;
}//mouseEnter metodunun sonudur...

}//olay appletin sonudur....



Örnek Kod (2).

İkinci program orneğide handleEvent() üst metodunun kullanımı ile ilgilidir.


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class olay2 extends Applet {
Label lid1=new Label("Su anda - - nolu islemi yapiyorsunuz");
Label lid2=new Label("");
Button b1=new Button("Ben Buton-1-");
Button b2=new Button("Ben Buton-2-");
Button b3=new Button("Ben Buton-3-");
Button b4=new Button("Ben Buton-4-");
char chr;
public **** init() {
setLayout(new FlowLayout(FlowLayout.LEFT));
add(b1); add(b2); add(b3); add(b4); add(lid1); add(lid2);
}//init metodunun sonudur...

public boolean handleEvent(Event e) {
lid1.setText("Su anda -"+e.id+" - nolu islemi yapiyorsunuz");
if (e.id==Event.ACTION_EVENT) {
showStatus("argüman...: " + e.arg);
}
if (e.id==Event.MOUSE_DOWN) {
lid2.setText("x Koordinati...: "+e.x+" Y Koordinati...: "+e.y);
}
return true;
}//handleEvent in sonudur...

}//olay2 applet sinifinin sonudur...


Örnek Kod (3).

Aşagıdaki kodda keyDown metodu ile ilgili güzel bir örnektir. Bu kod basılan tuşu applette göstermekte ve eğer basılan tuşlar yön tuşları ise bu karakteri appletin istediğimiz bir yerine taşımaktadır.
keyUp metodunun kullanımı keyDown mtodu ile aynıdır. İkisinin arasındaki fark ise keyDown metodu tuşa basılı tutarsanız aktif hale gelmekte , keyUp metodu ise basılan tuşu çektiğinizde aktif olmaktadır.


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class olay3 extends Applet {
char basilan_karakter;
int yerx,yery;

public **** init() {
yerx=(size().width/2)-8;
yery=(size().height/2)-16;
}//init metodunun sonudur...

public boolean keyDown(Event e,int key) { //tusa basildigini gösterir.
showStatus("Basilan tusun ascii kodu.: " + key);
switch(key) {
case(Event.DOWN):
yery+=7;
break;
case(Event.UP):
yery-=7;
break;
case(Event.LEFT):
yerx-=7;
break;
case(Event.RIGHT):
yerx+=7;
break;
default:
basilan_karakter=(char)key;
}
repaint();
return true;
}//keyDown metodunun sonudur...

public **** paint(Graphics graf) {
if(basilan_karakter!=0) {
graf.drawString(String.valueOf(basilan_karakter),yerx,yery);
}
}//paint metodunun sonudur...
}//olay3 applet sinifinin sonudur...
 

teokrasi

Yeni üye
25 Ağu 2007
1
0
dostum burda Örnek Kod (1). 14 satırda public **** ile başlayan yerde init ile ilgili bir sorun var sen nasıl çalıştırdın

olay.java:14: illegal start of type
public **** init() {
^
olay.java:14: invalid method declaration; return type required
public **** init() {
^
2 errors
 
Son düzenleme:

LuiLui

Katılımcı Üye
26 Ağu 2007
345
0
dostum burda Örnek Kod (1). 14 satırda public **** ile başlayan yerde init ile ilgili bir sorun var sen nasıl çalıştırdın

olay.java:14: illegal start of type
public **** init() {
^
olay.java:14: invalid method declaration; return type required
public **** init() {
^
2 errors

Aynı sorunla bende karşılaştım...
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.