为什么我的JLabel网格无法正常运行?

时间:2015-07-03 19:50:23

标签: java swing jlabel grid-layout imageicon

我正在尝试制作一个JLabel网格,每次按下按钮时都会更新。每个按钮(北,南,东,西)将图像从一个JLabel移动到网格上的另一个位置。我已经反复编写并重写了代码,但我仍然无法正确更新代码。为什么ImageIcon有时而不是其他人?我的逻辑在哪里有缺陷?

另外,我确实看了很多其他问题,关于这个问题,但没有一个能帮助我......

任何和所有的帮助都会大大减少。

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 个答案:

答案 0 :(得分:1)

我发现了问题,并且能够显着简化代码。

以下是适用的新更新代码:

char *