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