是否有一个常见的原因导致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 会执行两次。(例如 if[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);???