1

我正在构建一个简单的国际象棋游戏,并且一直试图在面板上绘制图纸

我准备好了一块板子,板上有面板。这些面板是 70x70 像素,接下来我要做的是使用整个表面来绘制棋子。

我制作了一个扩展 JPanel 的抽象类 Pieces。

public abstract class Piece extends JPanel

其中一个当然是 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);
}

这似乎不起作用。输出打印 height = 10px 和 width = 10px; ....但它应该是 70px 和 70px。我还看到画在我面板内的 10x10 正方形内的绿色椭圆形......

我尝试了一个 setSize(70,70) 并没有真正做到这一点......我也尝试了 SetPreferredSize 但它也没有真正奏效。我真的很想保留我的抽象类和子类......

@@@ 编辑 @@@ 我再次使用了 setPreferredSize,现在我可以在 Jpanel 上绘制我的绿色圆圈了。但是仍然存在错误,因为它不是使用的 Jpanel 的整个表面......顶部仍然存在间隙,截图:
http://imgur.com/INVj4

4

1 回答 1

1
  • 如果您只设置BackgroundColor.GREEN然后扩展JComponent

  • 如果您只想添加Image然后在JLabel中查找 Icon ,注意JLabel是透明的,non-opaque默认情况下,

  • 任何JComponent都可以返回setXxxSize

  • 并非所有LayoutManagers都被接受setXxxSize

带有 setXxxSize 的示例JComponent

于 2011-11-06T22:33:45.403 回答