我创建了一个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);
}
}
答案 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);
}
}
}
}