2015-07-03 75 views
2

我正在嘗試使每次按下按鈕時更新的JLabel網格。每個按鈕(北,南,東,西)都將圖像從一個JLabel移動到網格上的另一個位置。我一遍又一遍地編寫並重新編寫了代碼,但仍然無法正確更新。爲什麼ImageIcon有時而不是其他人?我的邏輯在哪裏有缺陷?爲什麼我的JLabel網格無法正常工作?

而且,我也看到了一堆別人的質疑,這樣對這個問題,但沒有人幫我...

任何和所有幫助將大大apreciated。

ImageIcon man; 
ImageIcon grass; 
public int xPosition=0; 
public int yPosition=0; 

    class ButtonListener implements ActionListener{ 
     @Override 
     public void actionPerformed(ActionEvent evt) { 

     if(evt.getActionCommand() == Actions.east.name()){ 
      System.out.println("east!"); 
      if(yPosition<4){ 
       xPosition++; 
      } 
     } 
     if(evt.getActionCommand() == Actions.west.name()){ 
      System.out.println("west!"); 
      if(yPosition>0){ 
       xPosition--; 
      } 
     } 
     if(evt.getActionCommand() == Actions.north.name()){ 
      System.out.println("north!"); 
      if(xPosition>0){ 
       yPosition--; 
      } 
     } 
     if(evt.getActionCommand() == Actions.south.name()){ 
      System.out.println("south!"); 
      if(xPosition<4){ 
       yPosition++; 
      } 
     } 
     URL imageMan = getClass().getResource("man.png"); 
     man= new ImageIcon(imageMan); 

     URL imageGrass = getClass().getResource("grass.jpg"); 
     grass= new ImageIcon(imageGrass); 

     int row=0;    
     if(row==0){ 
      while(row<=5){ 
       if(yPosition == row){ 
        for(int i=0;i<=5;i++){ 
         if(i==xPosition){ 
          points[i][row].setIcon(man); 
         } 
         else{ 
          points[i][row].setIcon(grass); 
         } 
        } 
       } 
       else{ 
        for(int i=0;i<=5;i++){ 
         points[i][row].setIcon(grass); 
        } 
        row++; 
       } 
      } 
     } 
     row=0; 
     System.out.println("codinates: ("+xPosition+","+yPosition+")"); 
    } 
} 

這裏是我想要的結果是一個屏幕截圖,男人可以使用按鈕在屏幕上移動。

screen shot

+1

你可以上傳你想實現 – Madhan

+0

肯定的事情是什麼的截圖!我只是把它添加到我的問題。 @Madhan – MooseMan55

回答

1

我想通了這個問題,並能夠顯著簡化代碼。

這是新更新的代碼工作:

ImageIcon man; 
ImageIcon grass; 
public int xPosition=0; 
public int yPosition=0; 
public int oldX =0; 
public int oldY = 0; 

    class ButtonListener implements ActionListener{ 
     @Override 
     public void actionPerformed(ActionEvent evt) { 
     oldX = xPosition; 
     oldY = yPosition;  
     if(evt.getActionCommand() == Actions.east.name()){ 
      System.out.println("east!"); 
      if(xPosition<4){ 
       xPosition++; 
      } 
      else{ 
       System.out.println("can't go east!"); 
      } 
     } 
     if(evt.getActionCommand() == Actions.west.name()){ 
      System.out.println("west!"); 
      if(xPosition>0){ 
       xPosition--; 
      } 
      else{ 
       System.out.println("can't go west!"); 
      } 
     } 
     if(evt.getActionCommand() == Actions.north.name()){ 
      System.out.println("north!"); 
      if(yPosition>0){ 
       yPosition--; 
      } 
      else{ 
       System.out.println("can't go north!"); 
      } 
     } 
     if(evt.getActionCommand() == Actions.south.name()){ 
      System.out.println("south!"); 
      if(yPosition<4){ 
       yPosition++; 
      } 
      else{ 
       System.out.println("can't go south!"); 
      } 
     } 
     URL imageMan = getClass().getResource("man.png"); 
     man= new ImageIcon(imageMan); 

     URL imageGrass = getClass().getResource("grass.jpg"); 
     grass= new ImageIcon(imageGrass); 

     points[oldX][oldY].setIcon(grass); 
     points[xPosition][yPosition].setIcon(man); 

     System.out.println("codinates: ("+xPosition+","+yPosition+")"); 
    } 
} 
相關問題