0

プログラムを実行して円を動かすと、絵の具で絵筆で描いているように見えます。これを実現するために何をしたか、またはそれを止めるために何ができるかはよくわかりません。すべてのヘルプは大歓迎です。

これが私のコードです:

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

import javax.swing.JFrame;
import javax.swing.Timer;
import javax.swing.JPanel;
import java.awt.event.KeyListener;


public class MovingCar extends JPanel implements ActionListener, KeyListener {

    Timer tm = new Timer(5, this);
    int x = 0, y = 0, velX = 0, velY = 0;

    public MovingCar()
    {
        tm.start();
        addKeyListener(this);
        setFocusable(true);
        setFocusTraversalKeysEnabled(false);
    }
    protected void paintComponent (Graphics g) {
        super.paintComponents(g);
        g.drawOval(x, y, 50, 50);
    }

    public void actionPerformed(ActionEvent e){
        x = x + velX;
        y = y + velY;
        repaint();
    }

    public void keyPressed(KeyEvent e){
        int c = e.getKeyCode();

        if (c == KeyEvent.VK_DOWN)      {
            velX = -1;
            velY = 0;
        }

        if (c == KeyEvent.VK_UP)
        {
            velX = 1;
            velY = 0;
        }


    }   
    public void keyTyped(KeyEvent e){}
    public void keyReleased(KeyEvent e){

        if (x < 0)
        {
            velX = 0;
            x = 0;
        }

        if (x > 600)
        {
            velX = 0;
            x = 0;
        }


        repaint();  
        velY = 0;
        velX = 0;

    }


    public static void main(String[] args) {
        MovingCar o = new MovingCar();
        JFrame jf = new JFrame();
        jf.setTitle("Circle Move");
        jf.setSize(600,400);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.add(o);
        jf.setVisible(true);
    }


}
4

1 に答える 1