paint() メソッドが意図せずに 2 回呼び出される一般的な理由はありますか。次のコードがあります。
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 が 2 回実行される理由がわかりません (たとえば、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] に要素が存在するにもかかわらず、描画されないことがあるため、これは描画にも影響すると思います (行列は 16 進数の行列です)。
後で編集: g.fill3DRect(i*side,k*side, side, side, true); ということは何とか可能ですか? 私はhexagon.DrawHexfromMatrix(g、i、k、Color.black)でペイントしようとしている六角形をオーバーペイントする;???