从阵列中删除面板

时间:2016-07-30 02:47:23

标签: java arrays swing loops for-loop

我创建了一个10 x 10的Jpanel阵列,我必须从它们中删除一个正方形。必须删除单击的正方形,并且它下方和右侧的所有正方形都将被删除。 目前,当我点击一个正方形时,它只删除一个正方形。 http://imgur.com/a/6wZYA - 这就是网格的样子,然后是期望的结果。 下面是我目前使用的代码。欢迎任何帮助。如果我需要附加更多代码,请告诉我,谢谢。

    for (int x = 0; x < 10; x++) {
        playingGrid[x] = new JPanel[10];
        for (int y = 0; y < 10; y++) {
            playingGrid[x][y] = new JPanel();
            playingGrid[x][y]= new ImagePanel(Toolkit.getDefaultToolkit()
                                  .getImage("rock.jpg"));   
            pcenter.add(playingGrid[x][y]);
            playingGrid[x][y].addMouseListener(new Rockbreaker());
        }

    }
    f.getContentPane().add(pcenter, BorderLayout.CENTER);

}
public class Rockbreaker implements MouseListener{

    public void mouseClicked(MouseEvent e) {
         //sets all columns greater than one clicked to invisible 
        for (int x = 0; x < 10; x++) {
            for (int y = 0; y < 10; y++) {
                if(playingGrid[x][y]== e.getSource()){                  
                        for (int c=0;c<100;c++){
                            if(c>x){
                                playingGrid[x][y].setVisible(false);
                            }
                        }

1 个答案:

答案 0 :(得分:0)

你的逻辑存在缺陷。我不确定您在if(c&gt; x)块中尝试做什么,但您可以轻松地将其重写为

public void mouseClicked(MouseEvent e) {
    int selectedX = -1;
    int selectedY = -1;
    for (int x = 0; x < 10; x++) {
        for (int y = 0; y < 10; y++) {
            if(playingGrid[x][y]== e.getSource()){
                playingGrid[x][y].setVisible(false);
                selectedX = x;
                selectedY = y;
            } else if (selectedX > 0 && selectedY > 0 && selectedX <= x && selectedY <= y) {
                playingGrid[x][y].setVisible(false);
            }
        }
    }
}