我的问题是,当我创建一个JButton,在它的构造函数中,我使用以下代码将其位置设置为某些相对坐标,比如x = 5,y = 6,使用以下代码:
this.setLocation(new Point(x, y));
但在我尝试使用getLocation()方法获取其位置后,它总是返回0,0。请注意,对于我试图放置在网格布局驱动的JFrame上的每个JButton都会发生这种情况,并且在调试过程中,我还注意到它们的位置正在被正确实例化。
有人可以向我解释为什么会发生这种情况,如果我能以某种方式修复它吗?
编辑:
构造函数(我创建的brick类,扩展了JButton):
public Brick(int posx, int posy) {
this.setLocation(new Point(posx, posy));
this.setVisible(true);
}
我在2 for for循环中制作了大约100多个:
for (int row = 0; row < 15; row++) {
for (int column = 0; column < 15; column++) {
Brick brickie = new Brick(row, column);
}
}
但之后,如果我想挑一块砖并检查它的位置:
Point brickLocation = brickie.getLocation();
brickLocation.x == 0
和brickLocation.y == 0
答案 0 :(得分:2)
JComponent(s)
只能返回其坐标,getBounds或getLocation
如果容器已在屏幕上显示
pack()
答案 1 :(得分:2)
在布局管理器(您的GridLayout)自动分配按钮位置时,您正尝试更改按钮位置。这就是为什么你总是得到相同的价值 - 布局只是覆盖它。
为了能够手动更改任何组件边界/位置(包括按钮) - 您必须将“null”设置为容器的布局。之后只需根据需要更改位置/大小/边界,它将影响组件位置。
此外,您不需要使用“setVisible(true)” - 默认情况下,对于所有组件(即使那些尚未显示的组件),该标志为true。