java - JButton 及其 Location 方法表现得很奇怪

标签 java swing jbutton layout-manager grid-layout

我的问题是,当我在其构造函数中创建 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 == 0brickLocation.y == 0

最佳答案

当按钮位置由布局管理器(您的 GridLayout)自动分配时,您正试图更改按钮位置。这就是为什么你总是得到相同的值 - 布局只是覆盖它。

为了能够手动更改任何组件的边界/位置(包括按钮)——您必须将“null”设置为容器的布局。之后,只需根据需要更改位置/大小/边界,它就会影响组件的位置。

此外,您不需要使用“setVisible(true)”——默认情况下,该标志对所有组件(甚至那些尚未显示的组件)都为真。

关于java - JButton 及其 Location 方法表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10892655/

相关文章:

java - 图片加载路径

java - 我可以限制可以绘制的 JTextField 中的文本长度,同时仍然存储全文吗?

Java 使用 SSL 进行数据库连接

java - Paypal "Buy now"按钮-如何知道支付成功

java - 将 JTabbedPane 居中,但不将实际选项卡居中

java - JTable 内带有图像的 JButton。怎么让它变成动画呢?

java - JButton 在 JFrame 中响应,但不在 JPanel 中响应

java - 我有华为站点工具包错误代码 :10017

java - 由 : org. hibernate.QueryException : could not resolve property: lastUpdateDate of: com. XXX.XXX.entity.Student 引起

java - 如何向 JRadioButton 标签添加 Action 监听器?