1

frame.setSize(480, 400)JFrame のサイズを設定するために使用しています。それにもかかわらず、衝突チェックを行っているとき (私はブレイクアウト ゲームを作成しています)、ボールは画面の下部から完全に外れてしまい、最終的に跳ね返ります。これは私が使用している衝突コードです: if (YPos + height >= MainClass.height) { YVel = YVel * -1; }. 静的な高さ変数は 400 に設定され、frame.setSize呼び出しで使用されます。これは私のピンポン ゲームでも発生しましたが、いくつかのハード セット値で修正しました。ただし、これは悪い習慣なので、繰り返したくありません。

返信ありがとうございます、Rees。

4

2 に答える 2

2
  1. 設定しないframe.setSize(480, 400)frame.setPreferredSize(480, 400)

  2. ペイントでJPanel/を使用JComponentし、このコンテナから座標を返す

  3. Swing でのペイントは、デフォルトでは/PreferredSize をオーバーライドPreferredSizeするJPanelJComponent必要はありません( を参照dim.widthしてください。dim.heightこのメソッドは、サイズ変更後も/にObject追加された (s) の適切な座標を返します)JPanelJComponent

  4. (最後のコード行) を呼び出しJFrame.pack()JFrame.setVisible(true)

5.とJFrameで計算する必要がある適切な調整を返しませんが、内側と適切なサイズを返しますBordersToolbarContentPane

于 2013-02-09T20:35:29.047 に答える
1

フレームには枠があります。これらの境界線は、提供された利用可能なスペースの内側にあります。つまり、コンテンツに利用できるスペースはframe size - border insets

代わりに、コンテンツの優先サイズを設定し、使用JFrame#packしてフレーム サイズを計算します。

チェックアウト

いくつかの例と詳細について

于 2013-02-09T20:42:29.957 に答える