形状增加而不是移动 - Java(GUI applet)

时间:2017-04-19 19:38:34

标签: java swing graphics applet awt

我正在尝试更改矩形的y位置,但是,每当我尝试时,它会垂直扩展/ 变得更大

public class PlayerPaddle implements Paddle {

    double yVelocity;
    final double GRAVITY = 0.94;

    //move up/down faster (if not accelerating = slow down)
    boolean upAccel, downAccel;

    //determines if player 1 or player 2 (on left or on right)
    int player;

    //position of actual paddle
    int x;
    double y;


    Rectangle panel;

    public PlayerPaddle(int player) {

        upAccel = false;
        downAccel = false;

        y = 210; //not moving initially
        yVelocity = 0;

        if (player == 1) {
            //left side
            x = 20;
        } else {
            //right side
            x = 660;
        }
    }


    @Override
    public void draw(Graphics g) {

        //draw paddle
        g.setColor(Color.WHITE);
        g.fillRect(x, (int) y, 20, 80);
    }


    @Override
    public void move() {

        if (upAccel) {
            yVelocity -= 2;
        } else if (downAccel) {
            yVelocity += 2;
        } else if ((!upAccel) && (!downAccel)) {
            yVelocity *= GRAVITY;
        }
        y += yVelocity; //changes y position of paddle
    }

    public void setUpAccel(boolean input) {
        upAccel = input;
    }

    public void setDownAccel(boolean input) {
        downAccel = input;
    }

    @Override
    public int getY() {
        return (int) y;
    }
}

我想知道如何使矩形垂直上下移动。一个类似的问题只有一个答案说,先前绘制的矩形没有被清除,因此正在扩大。但即使我说g.clearRect(...)它仍然会扩展并且不会移动。

我是Swing和Awt的新手,但我真的很乐意学习。 感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

一个类似的问题只有一个答案说,先前绘制的矩形没有被清除,因此正在扩大

这仍然是这里的问题。

在某处,不在此处提供的代码中,您需要调用此类的draw(...)方法。

因此,在该代码中,您需要确保在绘制焊盘之前清除组件的背景。由于您应该覆盖面板的paintComponent(...)方法来进行自定义绘制,因此您的代码应该类似于:

@Override
protected void paintComponent(Graphics g)
{
    super.paintComponent(g);
    // draw the paddle
}

阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。

  

我是Swing和Awt的新手,但我真的很乐意学习。

然后为所有Swing基础知识保留教程的链接。