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 (プログラムの別の部分の行と列の変数) の黄色い四角だけです。「×」が全く見えません。col+10、row+10 ですべてマッシュアップされた場合に備えて、スペースを空けようとしましたが、影響はありません。同じ効果で列と行を切り替えました。

ありがとうございました。

4

2 に答える 2

4

drawString の 2 番目と 3 番目の引数はピクセル単位です。多くの 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 に答える