0
public void drawboard(Graphics g){
    g.setColor(Color.yellow);
    for (int row = 0; row < board.length; row++){
        for (int col = 0; col < board[row].length; col++){
                g.drawString("X", col, row);
            }
    }

我得到的只是一个 35x30 的黄色正方形(程序另一部分中的 row 和 col 变量)。我根本看不到任何“X”。我试图将它隔开,以防它与 col+10, row+10 混合在一起,但这并不影响它。我以相同的效果切换了 col 和 row。

谢谢你。

4

2 回答 2

4

drawString 的第二个和第三个参数以像素为单位。你只是在自己身上打印很多 X,一次又一次地偏移 1 个像素,所以当然你得到的只是一个大斑点。

你想要的是乘以你的行和列的宽度/高度,如下所示:

g.drawString("X", col * columnWidth, row * rowHeight);
于 2010-02-05T23:31:50.640 回答
-1

这段代码没有任何问题。对于这段代码,您当然会看到黄色矩形,因为 X 仅相隔 1 个像素。

如果您为 drawString 提供了足够的坐标,您应该在该坐标处看到您的 X。因此,如果您像解释的那样在循环中分隔 col 和 row 变量,您应该在几行/列中看到几个 X。(但不要忘记在这种情况下更改板阵列,因为如果将它们间隔得太远,循环可能根本不会执行)。

也许您可以告诉我们您从哪里调用该代码?它是在paintComponent 方法中执行的,还是您从其他线程手动调用它?

于 2010-02-05T23:28:41.600 回答