オブジェクトに船、ヒット、ミスを描こうとしている戦艦ゲームがありGrid
ます。Grid
多くの を持つ JPanel のインスタンスですBlocks
。Blocks
JPanel でもありますが、の属性ですGrid
。船はグリッド上に描かれていますが、ブロックの下にあります。ブロックの上に描画することはできますか? Glass Pane を試してみましたが、うまくいきませんでした。他の解決策はありますか?
2 に答える
2
ブロックの上に描画することはできますか? Glass Pane を試してみましたが、うまくいきませんでした。他の解決策はありますか?
はい、推奨されませんが、時々役立つアプローチは、拡張を使用して関数JPanel
をオーバーライドすることです。paint(Graphics g)
Class MyGridPane extends JPanel
{
@Override
public void paint(Graphics g) {
super.paint(g); // <----- don't forget to call this
// then anything you draw will appear above the child component's
Graphics2D g2d = (Graphics2D)g.create(); // cloning to work, it is safer aproach
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));
g2d.fillRect(0, 0, getWidth(), getHeight());
g2d.dispose();// disposing the graphics object
}
}
または、ターゲット panel(Grid)のレイヤーのJLayeredPane
上に描画された画像を含む Panel を操作するために使用することを検討することもできます。チェックアウトHow to Use Layered Pane
于 2013-11-11T17:12:07.543 に答える