2017-04-19 27 views
0

我正在嘗試更改矩形的y位置,但是,每當我嘗試時,它將展開/ 垂直地取大於形狀增大而不是移動 - Java(GUI小程序)

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

類似的問題只有一個答案,說,以前畫的矩形沒有被清除,其結果是擴大

在這裏,這仍然是可能的問題。

某處,不在此處介紹的代碼中,您需要調用此類的draw(...)方法。

所以在該代碼中,您需要確保在繪製槳之前清除組件背景。既然你應該覆蓋面板的paintComponent(...)方法做定製畫你的代碼應該是這個樣子:

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

閱讀從Custom Painting Swing的教程部分獲取更多信息和工作的例子。

我是Swing和Awt的新手,但我真的很想學習。

然後保留所有Swing基礎知識的指南。

+0

感謝您的幫助:) – badProgrammer

+0

哦,我的壞,只是做 – badProgrammer