私は単純なチェス ゲームを構築していますが、パネルに図面をペイントしようとして立ち往生しています。
ボードの準備ができており、ボードにはパネルがあります。これらのパネルは 70x70px で、次にやりたいことは、その表面全体を使ってチェスの駒を描くことです。
JPanelを拡張した抽象クラスPpiecesを作りました。
public abstract class Piece extends JPanel
ピースの 1 つはもちろん Pawn です。
public class Pawn extends Piece
Pawn クラスには、ペイント コンポーネントがあります。
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int w = getWidth();
int h = getHeight();
g.setColor(Color.GREEN);
g.fillOval(0, 0, w, h);
System.out.println("height:"+h+" width:"+w);
}
これはうまくいかないようです。出力は、高さ = 10px および幅 = 10px を出力します。....しかし、70pxと70pxのはずです。パネルの内側にある 10x10 の正方形の内側に緑色の楕円形が描かれているのもわかります...
私は setSize(70,70) を試しましたが、実際にはうまくいきません... SetPreferredSize も試しましたが、うまくいきませんでした。抽象クラスとサブクラスを本当に維持したい...
@@@ 編集 @@@ setPreferredSize を再度使用して、実際に Jpanel に緑色の円を描画できるようになりました。しかし、使用されている Jpanel の表面全体ではないため、エラーが残ります...上部にギャップが残っています。スクリーンショット: