2016-04-06 38 views
1

Ok düğmelerini tıklattığımda hareket eden bir top oluşturmaya çalıştım. Ok düğmelerini tıkladığımda, top yanıt vermiyor. Ok düğmelerini tıkladığımda hareket eden bir top yaratmaya çalıştım. Ok düğmelerini tıkladığımda, top yanıt vermiyor. İşte kodum:Java'da Nesneyi Taşırken Sorun Yaşıyor

package ball.main; 

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

import javax.swing.JPanel; 
import javax.swing.Timer; 

public class Ball extends JPanel implements ActionListener, KeyListener { 

    Timer t = new Timer(5, this); 

    int x = 0; 
    int y = 0; 
    int velX; 
    int velY; 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.setColor(Color.GREEN); 
     g.fillOval(x, y, 20, 20); 
     t.start(); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 

     if (x < 0) { 
      x = 0; 
     } 
     if (x > 580) { 
      x = 580; 
     } 
     if (y < 0) { 
      y = 0; 
     } 
     if (y > 580) { 
      y = 580; 
     } 

     x += velX; 
     x += velY; 
     repaint(); 

    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
     int code = e.getKeyCode(); 

     if (code == KeyEvent.VK_UP) { 
      velY = -1; 
     } 
     if (code == KeyEvent.VK_DOWN) { 
      velY = 1; 
     } 
     if (code == KeyEvent.VK_RIGHT) { 
      velX = 1; 
     } 
     if (code == KeyEvent.VK_LEFT) { 
      velX = -1; 
     } 

    } 

    @Override 
    public void keyReleased(KeyEvent e) { 
     velX = 0; 
     velY = 0; 
    } 

    @Override 
    public void keyTyped(KeyEvent e) { 
     // TODO Auto-generated method stub 

    } 


} 

Kodumda sorun mu var?

+2

ait Key Bindings kullanmaktır. PaintComponent() yöntemi yalnızca boyama için kullanılır. – camickr

cevap

3

cevap hiç bir boyama yönteminde bir Timer Nesnesi başlamayın yerine KeyListener