0

上に青い四角形が描かれたボードの上に四角形を描画しようとすると、四角形が青い四角形の下に描画されますが、赤い四角形を描画するメソッドは赤い四角形の後に呼び出されます..

ここに画像の説明を入力

 @Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g); //To change body of generated methods, choose Tools | Templates.

    //this method paints the  blue board
    pintarTablero(getGraphics(), tableroMio, 100, 200);

   //red rectangle
   g.setColor(Color.red);
   g.drawRect(200, 200, 200, 200);
   g.fillRect(200, 200, 200, 200);
}


 public void pintarTablero(Graphics g, int tab[][], int x, int y) {


    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            if (tab[i][j] == 0) {
               // g.setColor(Color.blue);
                //g.fillRect(x + i * 30, y + j * 30, 30, 30);

               // g.setColor(Color.black);
                g.drawRect(x + i * 30, y + j * 30, 30, 30);






            }
        }
    }


}
4

2 に答える 2

0

クリップの変更などの面倒pintarTableroなことは何もしないので、次の行を変更することをお勧めします。

pintarTablero(getGraphics(), tableroMio, 100, 200);

これに:

pintarTablero(g, tableroMio, 100, 200);

paintComponent に渡された Graphics オブジェクトが getGraphics で返されたものと同じではないことがわかるからです。以下を paintComponent に挿入しようとすると:

System.out.println(g == getGraphics());

印刷さfalseれ、この相互作用が問題の原因である可能性があります。いずれにせよ、paintComponent 内で getGraphics メソッドを使用するべきではありません。

于 2013-10-23T22:33:18.360 に答える