循环在网格上绘制一块

时间:2013-11-14 17:39:23

标签: java swing

我有一个640x640网格,可以映射到8x8 2D数组。我需要能够在用户单击的位置绘制一个椭圆形,并且我试图找出一个循环来执行它而不是键入多个if语句。

例如,我可以为电路板上的每个方块写这个,它将绘制所需的形状而没有问题。

oldx = event.getX(); 
oldy = event.getY(); 
if(oldx<=80&&oldy<=80){
board[0][0]=1; 
    repaint(); 

}

我正在尝试制作一个循环,这是我到目前为止所做的,虽然不是很好。它打印在不受欢迎的位置。我认为我在这里的方式是它只打印在可被80整除的位置。我需要将x和y坐标输入到2D数组中。

    int x1 = oldx/80;
    int y1 = oldy/80;
    for(int r=0; r<8; r++){
      for(int c=0; c<8; c++){
          board[x1][y1] = 1;
           repaint();
         }  
       }
    }

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

你似乎正走在正确的道路上。但是,您在循环示例中没有条件。您需要在双if()循环中添加for语句,以检查所选的X和Y是否与您循环的当前正方形匹配。

答案 1 :(得分:2)

这将使它适合你。

    boolean found = false;
    while(found!=true){
    for(int r=0; r<8; r++){
        for(int c=0; c<8; c++){
        if(y1==c&&x1==r){
            board[r][c] = 1;
            found = true;
            repaint();
                }
            }
        }
    }
}