paint () no applet java é chamado duas vezes sem motivo

Existe um motivo comum pelo qual o método paint () pode ser chamado duas vezes sem pretender. Eu tenho o seguinte código

public void paint(Graphics g)
{
     //Graphics2D gg;
     //gg=(Graphics2D) g;

     drawMatrix(g);

}

        private void drawMatrix(Graphics g) {

       int side = 40;
       hex hexagon=new hex();
       for(int i = 0; i<9; i++) 
          for(int k = 0; k<9; k++){ 

            g.setColor(Color.lightGray);
            g.fill3DRect(i*side,k*side, side, side, true);
            if (matrix[i][k]!=null){System.out.println("i is "+i+" k is "+k);
                g.setColor(Color.black);hexagon.DrawHexfromMatrix(g, i, k, Color.black);}
    }   
    }

hex é uma classe que estende o polígono (para modelar uma figura hexagonal), e o DrawHexfromMatrix é uma função que desenha um hexágono do índice da matriz que é desenhada (coloque o hexágono no slot de uma matriz). Eu posso fornecer todo o código, se você acha que ajuda, mas por enquanto não entendo por que o system.out.println é executado duas vezes (por exemplo, se [1] [2] e [2] [3] não são null, ele imprimirá:

    i is 1 k is 2 
    i is 2 k is 3 
    i is 1 k is 2
    i is 2 k is 3  

Acho que isso também afeta meu desenho, porque às vezes, embora um elemento exista em [i] [k] não seja desenhado (a matriz é uma matriz hexadecimal).

Edit mais tarde: É possível de alguma forma que g.fill3DRect (i * lado, k * lado, lado, lado, verdadeiro); para pintar demais os hexágonos que estou tentando pintar com hexagon.DrawHexfromMatrix (g, i, k, Color.black); ???

questionAnswers(1)

yourAnswerToTheQuestion