Java 为什么我的JLabel网格不能正常工作?

Java 为什么我的JLabel网格不能正常工作?,java,swing,jlabel,grid-layout,imageicon,Java,Swing,Jlabel,Grid Layout,Imageicon,我正在尝试创建一个JLabel网格,每当按下一个按钮时它都会更新。每个按钮(北、南、东、西)将图像从一个JLabel移动到网格上的另一个位置。我已经一遍又一遍地编写代码,但仍然无法正确更新。为什么图像图标有时会出现,而其他的则不会出现?我的逻辑哪里有缺陷 另外,我也看了很多关于这个问题的其他问题,但是没有一个能帮助我 任何和所有的帮助都将不胜感激 ImageIcon man; ImageIcon grass; public int xPosition=0; public int yPositio

我正在尝试创建一个JLabel网格,每当按下一个按钮时它都会更新。每个按钮(北、南、东、西)将图像从一个JLabel移动到网格上的另一个位置。我已经一遍又一遍地编写代码,但仍然无法正确更新。为什么图像图标有时会出现,而其他的则不会出现?我的逻辑哪里有缺陷

另外,我也看了很多关于这个问题的其他问题,但是没有一个能帮助我

任何和所有的帮助都将不胜感激

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+")");
    }
}
ImageIcon-man;
象鼻草;
公共int xPosition=0;
公共int-yPosition=0;
类ButtonListener实现ActionListener{
@凌驾
已执行的公共无效操作(操作事件evt){
if(evt.getActionCommand()==Actions.east.name()){
System.out.println(“东!”);
如果(yPosition0){
位置--;
}
}
if(evt.getActionCommand()==Actions.north.name()){
System.out.println(“北!”);
如果(X位置>0){
位置--;
}
}
if(evt.getActionCommand()==Actions.south.name()){
System.out.println(“南部!”);

if(xPosition我解决了这个问题,并且能够显著简化代码

以下是新的更新代码:

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+")");
    }
}
ImageIcon-man;
象鼻草;
公共int xPosition=0;
公共int-yPosition=0;
公共整数oldX=0;
公共整数oldY=0;
类ButtonListener实现ActionListener{
@凌驾
已执行的公共无效操作(操作事件evt){
oldX=xPosition;
oldY=位置;
if(evt.getActionCommand()==Actions.east.name()){
System.out.println(“东!”);
if(xPosition0){
位置--;
}
否则{
System.out.println(“不能往西走!”);
}
}
if(evt.getActionCommand()==Actions.north.name()){
System.out.println(“北!”);
如果(位置>0){
位置--;
}
否则{
System.out.println(“不能北上!”);
}
}
if(evt.getActionCommand()==Actions.south.name()){
System.out.println(“南部!”);

if(Yposition)你能上传一张你想要达到的目标的截图吗?真的!我刚把它添加到我的问题中。@Madhan