Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > bU kOD neDEN ÇALI?MIYO
Yazar
susarac


avatar

Kayıt: 24.01.2006
28.05.2006-18:03 #7247
aRKADAŞLAR KODA BAKIP SÖYLER MİSİNİZ KLAVYA TUŞLARINI VE MOUSE U KULLANABİLİYORUM AMA NEDEN BUTTONLARA BASINCA Bİ SEY OLMUYO

KOD:



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

public class sonson extends Applet implements ActionListener {


int x=400,y=250,radius=30;
boolean canMove=true;
String s=null;
Button yuk,as,sag,sol;
Color col=Color.black;


public void init(){
Button yuk=new Button (" yukarı ");
Button as=new Button(" aşağı ");
Button sag=new Button (" sağa ");
Button sol=new Button(" sola ");
this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(yuk);
this.add(as);
this.add(sag);
this.add(sol);
setBackground(Color.WHITE);

}
public boolean mouseDown(Event e, int a, int b)
{
canMove = false ;

if(a>=x-radius && b<=x+radius)
if(b>=y-radius && b<=y+radius)
canMove = true ;

return true ;
}

public boolean mouseDrag(Event e, int a, int b)
{
if(canMove)
{
x = a ;
y = b ;
}

repaint() ;

return true ;
}

public boolean keyDown(Event e,int k)
{
if(e.id == Event.KEY_ACTION)
{
switch(k)
{
case Event.UP :
y -= 5 ;
repaint() ;
break ;
case Event.DOWN :
y += 5 ;
repaint() ;
break ;
case Event.LEFT :
x -= 5 ;
repaint() ;
break ;
case Event.RIGHT :
x += 5 ;
repaint() ;
break ;
case Event.F1 :

col = Color.black ;
repaint() ;
break ;
case Event.F2 :
col = Color.cyan ;
repaint() ;
break ;
case Event.F3 :
col = Color.gray ;
repaint() ;
break ;
case Event.F4 :
col = Color.green ;
repaint() ;
break ;
case Event.F5 :
col = Color.magenta ;
repaint() ;
break ;
case Event.F6 :
col = Color.orange ;
repaint() ;
break ;
case Event.F7 :
col = Color.red ;
repaint() ;
break ;
case Event.F8 :
col = Color.yellow ;
repaint() ;
break ;
case Event.F9 :
col = Color.pink ;
repaint() ;
break ;
case Event.F10 :
col = Color.blue ;
repaint() ;
break ;
}
}
return true;


}
public void actionPerformed(ActionEvent e){
if(e.getSource()==yuk){

y-=5;
repaint();}

else if(e.getSource()==as){
y+=5;
repaint();
}
else if(e.getSource()==sag){
x+=5;
repaint();
}

else if(e.getSource()== sol){
x-=5;
repaint();
}

}








public void paint(Graphics g){

s="x:"+x+" "+"y:"+y;
g.drawString(s,400,10);
setForeground(col) ;

g.drawOval(x,y,radius,radius);
}



}






www.technooweb.net



Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
28.05.2006-18:51 #7248
öncelikle action listener eklememişsin.
bunun dışında global değişkenleri içerde local olarak tanımladın tekrar
fakat this kullanıp globalleri eklemişsin.
 

package com.orhan.yilmaz;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class test extends Applet implements ActionListener {
int x=400,y=250,radius=30;
boolean canMove=true;
String s=null;
Button yuk,as,sag,sol;
Color col=Color.black;
public void init(){
//yukarıda butonları tanımlamıssın bi daha Button yuk=new Button dememen lazım
yuk=new Button(" yukarı ");
as=new Button(" aşağı ");
sag=new Button(" sağa ");
sol=new Button(" sola ");

this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(yuk);
this.add(as);
this.add(sag);
this.add(sol);
setBackground(Color.WHITE);
//action listenerin yok hepsine ekle
yuk.addActionListener(this);

}
public boolean mouseDown(Event e, int a, int b) {
canMove = false ;

if(a>=x-radius && b<=x+radius)
if(b>=y-radius && b<=y+radius)
canMove = true ;

return true ;
}

public boolean mouseDrag(Event e, int a, int b) {
if(canMove) {
x = a ;
y = b ;
}
repaint() ;

return true ;
}
public boolean keyDown(Event e,int k) {
if(e.id == Event.KEY_ACTION) {
switch(k) {
case Event.UP :
y -= 5 ;
repaint() ;
break ;
case Event.DOWN :
y += 5 ;
repaint() ;
break ;
case Event.LEFT :
x -= 5 ;
repaint() ;
break ;
case Event.RIGHT :
x += 5 ;
repaint() ;
break ;
case Event.F1 :
col = Color.black ;
repaint() ;
break ;
case Event.F2 :
col = Color.cyan ;
repaint() ;
break ;
case Event.F3 :
col = Color.gray ;
repaint() ;
break ;
case Event.F4 :
col = Color.green ;
repaint() ;
break ;
case Event.F5 :
col = Color.magenta ;
repaint() ;
break ;
case Event.F6 :
col = Color.orange ;
repaint() ;
break ;
case Event.F7 :
col = Color.red ;
repaint() ;
break ;
case Event.F8 :
col = Color.yellow ;
repaint() ;
break ;
case Event.F9 :
col = Color.pink ;
repaint() ;
break ;
case Event.F10 :
col = Color.blue ;
repaint() ;
break ;
}
}
return true;
}
public void actionPerformed(ActionEvent e){
System.out.println(e.getSource());
if(e.getSource()==yuk){
this.setBackground(Color.red);
y-=5;
repaint();}
else if(e.getSource()==as){
y+=5;
repaint();
} else if(e.getSource()==sag){
x+=5;
repaint();
}
else if(e.getSource()== sol){
x-=5;
repaint();
}
}
public void paint(Graphics g){
s="x:"+x+" "+"y:"+y;
g.drawString(s,400,10);
setForeground(col) ;
g.drawOval(x,y,radius,radius);
}



}






N/A
Yazar
susarac


avatar

Kayıt: 24.01.2006
28.05.2006-19:31 #7250
Denedim fakat o zaman da klavye tuşları işe yaramıyor.





www.technooweb.net



Yazar
susarac


avatar

Kayıt: 24.01.2006
29.05.2006-01:34 #7262
tired





www.technooweb.net



Yazar
bora


avatar
Istanbul
Kayıt: 14.01.2006
29.05.2006-04:11 #7265
import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 

public class sonson extends Applet { 

int x=400,y=250,radius=30; 
boolean canMove=true; 
String s=null; 
Button yuk,as,sag,sol; 
Color col=Color.black; 

public void init(){ 
yuk=new Button(" yukarı "); 
as=new Button(" aşağı "); 
sag=new Button(" sağa "); 
sol=new Button(" sola "); 
this.setLayout(new FlowLayout(FlowLayout.CENTER)); 
this.add(yuk); 
this.add(as); 
this.add(sag); 
this.add(sol); 
setBackground(Color.WHITE); 
yuk.addActionListener(new action_adapter(this,"yuk"));
as.addActionListener(new action_adapter(this,"as"));
sag.addActionListener(new action_adapter(this,"sag"));
sol.addActionListener(new action_adapter(this,"sol"));
this.addKeyListener(new key_adapter(this));
yuk.addKeyListener(new key_adapter(this));
as.addKeyListener(new key_adapter(this));
sag.addKeyListener(new key_adapter(this));
sol.addKeyListener(new key_adapter(this));
this.addMouseListener(new mouse_adapter(this));
this.addMouseMotionListener(new mouse_drag_adapter(this));

} 

public void mouse_Down(MouseEvent e) { 
canMove = false ; 
if(e.getX()>=x-radius && e.getY()<=x+radius) 
if(e.getY()>=y-radius && e.getY()<=y+radius) 
canMove = true ; 

} 

public void mouseDrag(MouseEvent e) { 
if(canMove) { 
x = e.getX() ; 
y = e.getY() ; 
} 
repaint() ; 

} 

public void yukari_actionPerformed(ActionEvent e) { 
	y-=5; 
	repaint();
}
public void asagi_actionPerformed(ActionEvent e) { 
	y+=5; 
	repaint();
}
public void saga_actionPerformed(ActionEvent e) { 
	x+=5; 
	repaint();
}
public void sola_actionPerformed(ActionEvent e) { 
	x-=5; 
	repaint();
}


public void keyReleased(KeyEvent e) { 
switch(e.getKeyCode()) { 
case KeyEvent.VK_UP : 
y -= 5 ; 
repaint() ; 
break ; 
case KeyEvent.VK_DOWN : 
y += 5 ; 
repaint() ; 
break ; 
case KeyEvent.VK_LEFT : 
x -= 5 ; 
repaint() ; 
break ; 
case KeyEvent.VK_RIGHT : 
x += 5 ; 
repaint() ; 
break ; 
case KeyEvent.VK_F1 : 
col = Color.black ; 
repaint() ; 
break ; 
case KeyEvent.VK_F2 : 
col = Color.cyan ; 
repaint() ; 
break ; 
case KeyEvent.VK_F3 : 
col = Color.gray ; 
repaint() ; 
break ; 
case KeyEvent.VK_F4 : 
col = Color.green ; 
repaint() ; 
break ; 
case KeyEvent.VK_F5 : 
col = Color.magenta ; 
repaint() ; 
break ; 
case KeyEvent.VK_F6 : 
col = Color.orange ; 
repaint() ; 
break ; 
case KeyEvent.VK_F7 : 
col = Color.red ; 
repaint() ; 
break ; 
case KeyEvent.VK_F8 : 
col = Color.yellow ; 
repaint() ; 
break ; 
case KeyEvent.VK_F9 : 
col = Color.pink ; 
repaint() ; 
break ; 
case KeyEvent.VK_F10 : 
col = Color.blue ; 
repaint() ; 
break ; 
} 
}

public void paint(Graphics g){ 
s="x:"+x+" "+"y:"+y; 
g.drawString(s,400,10); 
setForeground(col) ; 
g.drawOval(x,y,radius,radius); 
} 



} 

class key_adapter extends KeyAdapter {
    private sonson bagla;
    key_adapter(sonson bagla) {
        this.bagla = bagla;

    }

    public void keyReleased(KeyEvent e) {
        bagla.keyReleased(e);

    }
}
class action_adapter implements ActionListener {
    private sonson bagla;
    private String komut;
    action_adapter(sonson bagla,String komut) {
        this.bagla = bagla;
        this.komut = komut;
    }

    public void actionPerformed(ActionEvent e) {
    	if(komut == "yuk")
        	bagla.yukari_actionPerformed(e);
        if(komut == "as")
        	bagla.asagi_actionPerformed(e);       
        if(komut == "sag")
        	bagla.saga_actionPerformed(e);
        if(komut == "sol")
        	bagla.sola_actionPerformed(e);  
    }
}

class mouse_adapter extends MouseAdapter {
    private sonson bagla;
    mouse_adapter(sonson bagla) {
        this.bagla = bagla;
    }

    public void mousePressed(MouseEvent e) {
        bagla.mouse_Down(e);
    }
}

class mouse_drag_adapter extends MouseMotionAdapter {
    private sonson bagla;
    mouse_drag_adapter(sonson bagla) {
        this.bagla = bagla;
    }

    public void mouseDragged(MouseEvent e) {
        bagla.mouseDrag(e);
    }
}


butonların klavye girişi için odaklandıgından dolayı keyEvent lerin çalışmamakta idi
yani butonlarının da klavye girdilerini dinlemesi gerekmekte
bu marka kod istedigini yapar.kafana takılan yer varsa sor acıklayayım.





@yelloware












Yazar
susarac


avatar

Kayıt: 24.01.2006
29.05.2006-15:27 #7275
Yukarıda yazdığın kodu aynen kopyala yapıştır yaptım ama bir sürü hata verdi.Benim anlamadığım butonlarla klayve tuşlarını neden biribirine bağladın. Onlar neden bağımsız olarak çalışmıyo





www.technooweb.net



Yazar
bora


avatar
Istanbul
Kayıt: 14.01.2006
29.05.2006-16:05 #7276
öncelikle kodda hata olmadıgını sölim.sen ne hatası ile karsılastın yazar mısın?
class'ı html içine gömüp buraya attım bakabilirsin

http://members.lycos.co.uk/bdemir/applet/Sonson.htm

neden butonların klavye ile baglandıgına gelince.önceki postta da söledim gibi butonlardan herhangi biri seçili iken appletin klavye olaylarını dinlemez.çünkü klavye girdi odağı secilen butona yönlenmiştir.o yüzdendir ki butonlarına da keyListener bağlaman gerekmekte.





@yelloware












Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
29.05.2006-16:58 #7279
 
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
//key listeneri implement ediyoruz
public class test extends Applet implements ActionListener,KeyListener {
int x=400,y=250,radius=30;
boolean canMove=true;
String s=null;
Button yuk,as,sag,sol;
Color col=Color.black;
public void init(){
//yukarıda butonları tanımlamıssın bi daha Button yuk=new Button dememen lazım
yuk=new Button(" yukarı ");
as=new Button(" aşağı ");
sag=new Button(" sağa ");
sol=new Button(" sola ");
this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(yuk);
this.add(as);
this.add(sag);
this.add(sol);
setBackground(Color.WHITE);
//action listenerin yok hepsine ekle
yuk.addActionListener(this);
//key listeneri applete register ediyoruz
this.setFocusable(true);
this.addKeyListener(this);

}
public boolean mouseDown(Event e, int a, int b) {
canMove = false ;

if(a>=x-radius && b<=x+radius)
if(b>=y-radius && b<=y+radius)
canMove = true ;

return true ;
}

public boolean mouseDrag(Event e, int a, int b) {
if(canMove) {
x = a ;
y = b ;
}
repaint() ;

return true ;
}
public boolean keyDown(Event e,int k) {
if(e.id == Event.KEY_ACTION) {
switch(k) {
case Event.UP :
y -= 5 ;
repaint() ;
break ;
case Event.DOWN :
y += 5 ;
repaint() ;
break ;
case Event.LEFT :
x -= 5 ;
repaint() ;
break ;
case Event.RIGHT :
x += 5 ;
repaint() ;
break ;
case Event.F1 :
col = Color.black ;
repaint() ;
break ;
case Event.F2 :
col = Color.cyan ;
repaint() ;
break ;
case Event.F3 :
col = Color.gray ;
repaint() ;
break ;
case Event.F4 :
col = Color.green ;
repaint() ;
break ;
case Event.F5 :
col = Color.magenta ;
repaint() ;
break ;
case Event.F6 :
col = Color.orange ;
repaint() ;
break ;
case Event.F7 :
col = Color.red ;
repaint() ;
break ;
case Event.F8 :
col = Color.yellow ;
repaint() ;
break ;
case Event.F9 :
col = Color.pink ;
repaint() ;
break ;
case Event.F10 :
col = Color.blue ;
repaint() ;
break ;
}
}
return true;
}
public void actionPerformed(ActionEvent e){
System.out.println(e.getSource());
if(e.getSource()==yuk){
this.setBackground(Color.red);
y-=5;
repaint();} else if(e.getSource()==as){
y+=5;
repaint();
} else if(e.getSource()==sag){
x+=5;
repaint();
} else if(e.getSource()== sol){
x-=5;
repaint();
}
}
public void paint(Graphics g){
s="x:"+x+" "+"y:"+y;
g.drawString(s,400,10);
setForeground(col) ;
g.drawOval(x,y,radius,radius);
}
/* override edilen fonksiyonlar baslangıc*/
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyCode());

}
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
}

public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyCode());

}
/* override edilen fonksiyonlar bitis*/
}

bu koda boranın eklemiş olduğu adapter classlarını eklersen düzelir.





N/A
Yazar
susarac


avatar

Kayıt: 24.01.2006
29.05.2006-17:28 #7281
classları ayrı ayrı mı derlemem gerekiyo. yoksa hepsini tek textfile a ekleyip derlemem mi.
Bora senin yazdığın kodları aynen derlediğimde addActionListener kısımlarında hata veriyo





www.technooweb.net



Yazar
susarac


avatar

Kayıt: 24.01.2006
29.05.2006-17:51 #7282
Tamam Bora kodların doğruymuş ben yanlış derlemişim.Teşekkürler.
Ayrıca orhan yardımların için sana da teşekkür ederim.

Topic amacına ulaştı.applause





www.technooweb.net



Yazar
bora


avatar
Istanbul
Kayıt: 14.01.2006
29.05.2006-19:12 #7287
önemli değil kolay gelsin





@yelloware












Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb