2016-04-06 6 views
1

矢印ボタンをクリックすると動くボールを作ろうとしました。しかし、矢印ボタンをクリックすると、ボールは反応しません。私は矢印ボタンをクリックすると動く球を作りようとしました。しかし、矢印ボタンをクリックすると、ボールは反応しません。ここに私のコード:Javaで問題の移動オブジェクトを持っている

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 

    } 


} 

私のコードに間違いがありますか?

+2

Key Bindingsを使用することです。 paintComponent()メソッドはペイントにのみ使用されます。 – camickr

答えて

3

答えは、これまでの塗装方法でタイマーオブジェクトを起動しないでください代わりのKeyListener

関連する問題