1

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

感谢您的任何回复,里斯。

4

2 回答 2

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

  2. 绘画使用JPanel/ JComponent,然后从这个容器返回坐标

  3. 默认情况下,在 Swing 中绘画从不返回任何PreferredSize 必须覆盖PreferredSizeJPanel/JComponent,(请参阅dim.widthdim.height此方法返回添加到/的Object(s) 的正确坐标,在调整大小之后)JPanelJComponent

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

5.JFrame不返回适当的坐标必须与其Bordersand计算Toolbar,而是ContentPane返回内部适当的大小

于 2013-02-09T20:35:29.047 回答
1

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

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

查看

有关一些示例和更多详细信息

于 2013-02-09T20:42:29.957 回答