2015-07-03 27 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+")"); 
    } 
} 
相关问题