You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX如何使用HBox在画布指定坐标位置放置按钮等元素

JavaFX 按钮指定坐标放置问题解决方案

问题核心原因

HBox 属于 JavaFX 的流式布局容器,默认会自动计算排布内部子控件的位置,你给 Button 单独设置的setLayoutX()/setLayoutY()属于绝对定位属性,只有父容器是Pane(或其未重写布局逻辑的子类)时才会生效,放在 HBox 内部的话这些坐标设置会被 HBox 的布局逻辑覆盖,自然达不到预期效果。

可选实现方案

  • 方案1:无需 HBox,直接用 Pane 做绝对定位
    如果不需要 HBox 的水平自动排布特性,只是要把两个按钮放到指定坐标,直接把按钮添加到 Pane 类型的父容器即可,参考代码:
// 此处root为你初始化的Pane类型根容器,比如 Pane root = new Pane();
Button button = new Button(" Add to meal ");
Button button1 = new Button("   Add to list   ");

// 直接设置按钮坐标
button.setLayoutX(125.0d);
button.setLayoutY(325.0d);
button1.setLayoutX(130.0d);
button1.setLayoutY(520.0d);

// 直接添加到根容器,无需套HBox
root.getChildren().addAll(button, button1);
  • 方案2:保留 HBox,设置 HBox 整体坐标
    如果你需要用 HBox 统一管理多个按钮的水平间距、整体位置,可以给 HBox 本身设置坐标,再把按钮放到 HBox 内部:
// 初始化HBox,设置内部按钮间距为20
HBox hbox = new HBox(20);
Button button = new Button(" Add to meal ");
Button button1 = new Button("   Add to list   ");

hbox.getChildren().addAll(button, button1);
// 设置HBox整体坐标,内部按钮会跟随HBox移动
hbox.setLayoutX(125.0d);
hbox.setLayoutY(325.0d);

// 把HBox添加到父容器
root.getChildren().add(hbox);

内容的提问来源于stack exchange,提问作者old-boysenberry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:57:01