Java 为什么getHeight()不等于帧高度?

Java 为什么getHeight()不等于帧高度?,java,swing,graphics,awt,jcomponent,Java,Swing,Graphics,Awt,Jcomponent,我正在制作一个围绕一帧移动的反弹立方体。为了检测框架的边界,我使用JFrame中JComponent的getHeight和getWidth,并计算可能的边界,以便立方体可以反弹 对于getWidth来说,它工作得非常好。但是,我不能让它在getHeight的边界上反弹 当cu*be移动到窗口顶部时,它会在反弹前持续移动大约10像素 下面是这个问题的屏幕截图 这是我的密码: public class Cube { final public static int DIMENSION = 10

我正在制作一个围绕一帧移动的反弹立方体。为了检测框架的边界,我使用JFrame中JComponent的getHeight和getWidth,并计算可能的边界,以便立方体可以反弹

对于getWidth来说,它工作得非常好。但是,我不能让它在getHeight的边界上反弹

当cu*be移动到窗口顶部时,它会在反弹前持续移动大约10像素

下面是这个问题的屏幕截图

这是我的密码:

public class Cube {
    final public static int DIMENSION = 100;
    private final static int D_X = 20;
    private final static int D_Y = -20;
    private final static int SPEED = 1;
    private int xVelBK;
    private int yVelBK;
    private int xVel;
    private int yVel;
    private CubePoint[] pts;

    public  Cube(int x, int y){
    xVel = SPEED;
    yVel = SPEED;

    pts = new CubePoint[8];

    pts[0] = new CubePoint(x,y);
    pts[1] = new CubePoint(x,y - DIMENSION);
    pts[2] = new CubePoint(x + DIMENSION,y - DIMENSION);
    pts[3] = new CubePoint(x + DIMENSION,y);

    pts[4] = new CubePoint(x + D_X,y + D_Y);
    pts[5] = new CubePoint(x + D_X,y + D_Y - DIMENSION);
    pts[6] = new CubePoint(x + D_X + DIMENSION,y + D_Y - DIMENSION);
    pts[7] = new CubePoint(x + D_X + DIMENSION,y + D_Y);
    }

    public void move(int componentWidth, int componentHeight){
    ......

    //bug in here
    if (pts[0].getY()  - DIMENSION - D_Y <= 0 ) {
        yVel = SPEED;
    }

    .......
    }
..........
}
据我所知:

 if (pts[0].getY()  - DIMENSION - D_Y <= 0 ) {
应在立方体到达顶部时用于测试。因此,它应该是:

if ( pts[0].getY() <= 0) {
关键是:

据我所知,其中一项垂直测试需要测试:

 if (pts[0].getY()  - DIMENSION - D_Y <= 0 ) {
应在立方体到达顶部时用于测试。因此,它应该是:

if ( pts[0].getY() <= 0) {
关键是:


其中一个垂直测试需要测试窗口标题是否包含在窗口大小中。有一个函数可以告诉你窗口内部的大小,但我现在不记得它叫什么了。其他人可能会公开作废paintComponentGraphics g{..应该是公开作废paintComponentGraphics g{super.paintComponentg;。今天已经是第五次了。窗口的大小中包含了可能重复的窗口标题。有一个函数可以告诉您窗口内部的大小,但我不记得它现在叫什么。其他人可能会将paintComponentg作废{..今天第五次公开作废paintComponentGraphics g{super.paintComponentg;。可能重复