在循环通过2d阵列时更快地更新多个JFrame元素

时间:2014-06-08 13:56:31

标签: java arrays swing optimization multidimensional-array

我创造了Conway生命游戏的一个版本并且它工作正常,但是当2D阵列变大时,你可以看到游戏逐行更新(因为它是循环遍历数组)。

以下方法是我用来更新游戏的方法。 cellList是包含每个单元的状态的数组。 1 =活着,0 =死。该方法为数组中的每个单元格绘制一个矩形。

有没有办法更快地遍历数组?这是我第一次真正使用摇摆项目,所以我不熟悉我可以使用的其他东西。

谢谢!

public void paintCells()
{
    Graphics g = getGraphics();
    for(int x=0;x<cellList.length;x++)
    {
        for(int y=0;y<cellList.length;y++)
        {
            int rectX = winX/width * y;
            int rectY = winY/height * x;
            int rectWidth = winX/width;
            int rectHeight = winY/height;
            if(cellList[x][y] == 1)
            {
                g.setColor(Color.GREEN);
                g.fillRect(rectX, rectY, rectWidth, rectHeight);
            }
            else
            {
                g.setColor(Color.BLACK);
                g.fillRect(rectX, rectY, rectWidth, rectHeight);
            }
        }
    }

解决

在通过HDMI更新的阵列连接的监视器上查看程序,平滑程度高达700x700。我认为问题的主要原因是我使用的是由VGA连接的旧显示器。

0 个答案:

没有答案