首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java JLabel.getLocation()总是返回0

Java JLabel.getLocation()总是返回0
EN

Stack Overflow用户
提问于 2013-05-14 02:01:07
回答 1查看 602关注 0票数 0

我正在学习Java,所以我是个新手。我正在使用GUI布局,图像,标签等创建一个简单的‘迷宫’类型的游戏。

为了创建迷宫布局,我使用了一个字符串数组;

代码语言:javascript
复制
    mazeLayout[0] = "WWWWWWWWWW";
    mazeLayout[1] = "WSSSWWSWWW";
    mazeLayout[2] = "WSWSWWSSSW";
    mazeLayout[3] = "WSWSWWWWSW";
    mazeLayout[4] = "WSWSWWWWSW";
    mazeLayout[5] = "WSWSWSSSSW";
    mazeLayout[6] = "WSWSWSWWWW";
    mazeLayout[7] = "WSWSWSWWWW";
    mazeLayout[8] = "WSWSSSWWWW";
    mazeLayout[9] = "WWWWWWWWWW";

然后将其转换为一个二维数组,并根据字符串'W‘代表墙壁或'S’代表空间,在其中放置一个带有图像图标的标签。标签也是一个数组,我的想法是限制玩家的移动,这样他们就不能穿墙而行。

代码语言:javascript
复制
int mw = 0;
int mf = 0;
for(int y = 0; y < 10; y++){
    for(int x = 0; x < 10; x++){
        mazeLayout2d[y][x] = mazeLayout[y].substring(x, x+1);
        if (mazeLayout2d[y][x].equals("W")){
            lblmazewall[mw] = new JLabel();
            mazewall = new ImageIcon("mazewall.png");
            lblmazewall[mw].setIcon(mazewall);
            pCenter.add(lblmazewall[mw]);
            mw++;
            pCenter.revalidate();

        }
        if (mazeLayout2d[y][x].equals("S")){
            lblmazefloor[mf] = new JLabel();
            mazefloor = new ImageIcon("mazefloor.png");
            lblmazefloor[mf].setIcon(mazefloor);
            pCenter.add(lblmazefloor[mf]);
            mf++;
            pCenter.revalidate();
        }
    }
}

我的问题是当我运行这行的时候

代码语言:javascript
复制
System.out.println(lblmazewall[x].getLocation()); //x being any number

我总是得到java.awt.Pointx=0,y=0

我想知道如何获得每个墙壁标签的位置,以便我可以检查它与我的球员移动。

这是一个有效的方式来做这样的事情吗?有人能教我一种更有效的方法吗?

为我粗糙的片断和/或糟糕的编程道歉

谢谢你,尼尔。

EN

回答 1

Stack Overflow用户

发布于 2013-07-16 21:02:23

代码语言:javascript
复制
public Point getLocation()

由于本机事件处理的异步性质,此方法可能会返回过时的值(例如,在快速连续调用setLocation()之后)。因此,推荐的获取组件位置的方法是在java.awt.event.ComponentListener.componentMoved()内,该方法在操作系统完成移动组件后调用。

布局可能没有在内部使用setLocation()。这样getLocation()就不会按预期返回值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16528295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档