1

私は単純なチェス ゲームを構築していますが、パネルに図面をペイントしようとして立ち往生しています。

ボードの準備ができており、ボードにはパネルがあります。これらのパネルは 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 の表面全体ではないため、エラーが残ります...上部にギャップが残っています。スクリーンショット:
http://imgur.com/INVj4

4

1 に答える 1

1
  • then extendsのみに設定Backgroundする場合は、Color.GREENJComponent

  • 画像のみを追加する場合は、 JLabelでIcon を探します。メモはデフォルトでJLabel透明です。non-opaque

  • 任意のJComponentが返すことができるsetXxxSize

  • すべてのLayoutManagerが受け入れられるわけsetXxxSizeではありません。

setXxxSize を使用した JComponent の

于 2011-11-06T22:33:45.403 に答える