动画无法按预期工作

时间:2015-02-21 19:53:41

标签: java swing animation paintcomponent

我想制作一个矩形移动它移动但是Rectangle在移动时会变大。 (我没有10个声誉向你展示屏幕截图)

我真的不知道自己做错了什么,这是我的源代码:

Class Paddle.java

package ma.Game;

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

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

public class Paddle extends JPanel implements ActionListener{

int x = 0, velX = 2;
Timer t = new Timer(5, this);

public Paddle() {
    // TODO Auto-generated constructor stub
}

@Override
public void paintComponent(Graphics g) {
    super.paintComponents(g);

    g.setColor(Color.BLACK);
    g.fillRect(x, 30, 50, 30);

    t.start();
  }

@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    x = x + velX;
    repaint();
}
}

Class Frame.java 我将面板添加到框架中。

    package ma.Game;


import javax.swing.JFrame;

public class Frame extends JFrame
{
    public Frame() {
        // TODO Auto-generated constructor stub
        setTitle("Game");
        setSize(300, 500);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        add(new Paddle());
    }
}

1 个答案:

答案 0 :(得分:0)

你正在打电话

super.paintComponents(g);

导致之前调用paintComponent的绘画仍然可见。而是使用

super.paintComponent(g);

重新绘制容器的背景