Существует ли распространенная причина, по которой метод paint () может вызываться дважды, не будучи намеренным.У меня есть следующий код:
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 - это класс, расширяющий многоугольник (для моделирования фигуры шестиугольника), а DrawHexfromMatrix - это функция, которая рисует шестиугольник из индекса нарисованной матрицы (поместите шестиугольник в прорезь матрицы).Я могу предоставить весь код, если вы считаете, что это помогает, но сейчас я не понимаю, почему system.out.println выполняется дважды. (Например, если [1] [2] и [2] [3] не выполняютсяnull он напечатает:
i is 1 k is 2
i is 2 k is 3
i is 1 k is 2
i is 2 k is 3
Я думаю, что это также влияет на мой рисунок, потому что иногда, хотя элемент, существующий в [i], [k] не рисуется (матрица - это матрица из шестнадцатеричного числа).
Позднее редактирование: возможно ли как-то, что g.fill3DRect (i * side, k * side, side, side, true); перекрасить шестиугольники, которые я пытаюсь нарисовать с помощью hexagon.DrawHexfromMatrix (g, i, k, Color.black); ???