1

JPanels をレイヤー化する必要がありますが、方法がわかりません。私は 3 つのパネルを持っています。1 つ目は背景用、2 つ目はキャラクター/スプライトが移動するためのもので、最初のパネル (背景) を重ね、3 つ目は横にあるバーです (ボタンに使用され、何もする必要はありませんパネル 1 とパネル 2 を重ねるにはどうすればよいですか?

編集: 背景は、それぞれにアイコンが付いた 25x25 のラベルのグリッドで構成されています。

4

3 に答える 3

2

いくつかのオプション:

  • z オーダーの整数定数を使用してコンポーネントを階層化できる JLayeredPane を使用します。これを行う場合、基本的にヌル レイアウトも使用していることに注意してください。そのため、JLayeredPane に追加されたすべてのコンポーネントのサイズと位置を設定する必要があります。
  • バックグラウンドで画像をペイントするだけの場合は、単一の JPanel を使用して、JPanel の paintComponent メソッドで表示される BufferedImage として単純に画像をペイントできます。スプライトもペイントされますが、その場所は異なります。
于 2013-05-19T04:48:23.903 に答える
1

レイヤード ペインの使用方法 を参照してください。

使用することを忘れないでください:

panel.setOpaque(false);

または、パネルを重ねる必要はありません。パネルに背景画像をペイントするだけです。この例については、背景パネルを参照してください。

于 2013-05-19T04:47:51.893 に答える
0

最近、CSC クラスのトップダウン ビデオ ゲームに取り組みました。JPanel の paint() メソッドで背景を描画し、その後のすべてのスプライトを描画しただけです。また、Timer と ActionListener を使用して、JPanel を常に更新しました。

于 2013-05-19T05:35:40.850 に答える