2016-07-30 84 views
0

我創建了10乘10的Jpanels陣列,我必須從它們中移除一個正方形。被點擊的方塊必須被移除,所以它下面的所有正方形和右邊的方塊都必須移除。 目前,當我點擊一個正方形時,它只會刪除一個正方形。 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); 
          } 
         } 
+2

我已經刪除了你的JavaScript標記,因爲你的問題與此無關語言並添加了Swing標籤,因爲您的問題與此庫有關。但是至於你的實際問題,也許是我的問題,但我不知道你想要做什麼或者你在嘗試什麼問題。如果您很快就沒有得到正確的答案,請認真考慮改進這個問題,包括髮布更多相關和更好解釋的細節以及符合[mcve]的代碼發佈。 –

+0

另外,爲什麼給你的網格指定一個新的JPanel,'playingGrid [x] [y]',然後立即放棄這個JPanel對象,並將一個完全不同的對象,一個ImagePanel分配給同一個網格位置?這個不成立。 –

+0

此外,如果這是我的項目,我可能不會更改我的網格中的JPanel的可見性,因爲這可能會擾亂網格中所有可見組件的佈局,而是可能會使用JLabel的網格,並且只需交換顯示標籤的圖標即可。 –

回答

0

您的邏輯存在缺陷。我不確定你想在if(c> 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); 
      } 
     } 
    } 
}