Java 当我在JPanel中绘制矩形时,并非所有矩形都显示出来。为什么第一列中的某些矩形不显示?
现在,我正在制作俄罗斯方块的一个版本。为了测试我的图形课,在我开始画这幅作品之前,我先尝试画200个10x20的灰色正方形。我有两个称为myRectangles的2D数组,其中包含坐标、高度、宽度和MyColor,用于存储每个正方形的颜色。现在全是颜色,深灰色 在我的构造函数中,我设置了如下数组:Java 当我在JPanel中绘制矩形时,并非所有矩形都显示出来。为什么第一列中的某些矩形不显示?,java,jpanel,graphics2d,rectangles,tetris,Java,Jpanel,Graphics2d,Rectangles,Tetris,现在,我正在制作俄罗斯方块的一个版本。为了测试我的图形课,在我开始画这幅作品之前,我先尝试画200个10x20的灰色正方形。我有两个称为myRectangles的2D数组,其中包含坐标、高度、宽度和MyColor,用于存储每个正方形的颜色。现在全是颜色,深灰色 在我的构造函数中,我设置了如下数组: for(int i = 0; i < width; i++) { for(int j = 0; j < height; j++) { myColor
for(int i = 0; i < width; i++)
{
for(int j = 0; j < height; j++)
{
myColors[i][j] = Color.DARK_GRAY;
myRectangles[i][j] = new Rectangle2D.Double(INITIAL_X + (i * SQUARE_SIDE),
INITIAL_Y + (j * SQUARE_SIDE),
SQUARE_SIDE, SQUARE_SIDE);
}
}
然后,我有一个单独的drawBoard方法,因为当我真正开始在黑板上绘制作品时,我希望能够多次调用它。该方法类似于以下注释:我在该方法中有一些测试代码:
public void drawBoard()
{
Graphics g = myGame.getGraphics();
Graphics2D g2 = (Graphics2D) g;
int counter = 0;
for(int i = 0; i < TetrisBoard.MAX_WIDTH; i++)
{
for(int j = 0; j < TetrisBoard.MAX_HEIGHT; j++)
{
g2.setPaint(myColors[i][j]);
g2.fill(myRectangles[i][j]);
System.out.println(counter);
System.out.println("Drawing rectangle at " + myRectangles[i][j].getX() + " " + myRectangles[i][j].getY());
System.out.println("Color " + myColors[i][j]);
System.out.println();
counter++;
}
}
System.out.println(counter);
myGame.setVisible(true);
myWindow.setVisible(true);
}
通常,当我运行代码时,它会遗漏第一列中的几个方块。使用调试器时,它会正确显示。不要使用getGraphics方法进行绘制 自定义绘制是通过重写JPanel的paintComponent方法来完成的。然后将面板添加到框架中 有关更多信息和工作示例,请阅读上Swing教程的部分