我的JFrame大小与设置大小不匹配

时间:2013-02-09 20:29:44

标签: java swing jframe collision-detection game-physics

我正在使用frame.setSize(480, 400)来设置JFrame的大小。尽管如此,当我进行一些碰撞检查(我正在进行突破游戏)时,球完全脱离屏幕底部,然后最终反弹。这是我使用的碰撞代码:if (YPos + height >= MainClass.height) { YVel = YVel * -1; }。静态高度变量设置为400,并在frame.setSize调用中使用。这也发生在我的乒乓球比赛中,尽管我用一些硬设定值修正了它。我不想重复这个,因为这是不好的做法。

感谢任何回复,Rees。

2 个答案:

答案 0 :(得分:2)

  1. 不要设置frame.setSize(480, 400)frame.setPreferredSize(480, 400)

  2. 用于绘画以使用JPanel / JComponent,然后从此容器返回坐标

  3. 默认情况下,在Swing中绘画永远不会返回任何PreferredSize have to override PreferredSize for JPanel / JComponent,(请参阅dim.widthdim.height此方法会返回Object的正确坐标( s)在调整大小后添加到JPanel / JComponent

  4. 然后调用(最后一行代码行)JFrame.pack()JFrame.setVisible(true)

  5. 5. JFrame未返回正确的协调必须使用BordersToolbar计算,但ContentPane返回内部和正确的大小

答案 1 :(得分:1)

框架有边框。这些边框位于提供的可用空间内,这意味着内容的可用空间为frame size - border insets

相反,请设置内容的首选大小,并使用JFrame#pack计算帧大小

结帐

有关一些示例和更多详情