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

FXML中Java获取Button的fx:id问题:getId为何返回null?

问题解答:FXML中Button的fx:id通过getId()获取返回null的解决办法

嘿,这个操作完全可行!先帮你理清核心问题:FXML里的fx:id和JavaFX Node的id属性根本不是一回事——getId()方法拿的是Node的id属性,而不是fx:id。

你说GridPane设置fx:id后getId()能拿到值,大概率是你无意中给GridPane同时设置了id属性(或者在Java代码里调用过setId()),但Button只加了fx:id,没配置id属性,所以才返回null。

下面给你两种简单的解决办法:

方法一:在FXML中同时配置id和fx:id

直接在Button标签里加上id属性,值可以和fx:id保持一致,比如:

<Button fx:id="myTestButton" id="myTestButton" text="点击我" />

这样Java代码里调用myTestButton.getId()就能拿到你设置的标识了。

方法二:在Java控制器中手动设置id

如果不想修改FXML文件,也可以在控制器的初始化方法里给Button设置id:

@FXML
private Button myTestButton;

@Override
public void initialize(URL location, ResourceBundle resources) {
    // 可以设成和fx:id一样的值,或者其他你需要的标识
    myTestButton.setId("myTestButton");
}

最后再啰嗦一句:fx:id的唯一作用是让FXML加载器把组件注入到控制器的对应字段里,和Node的id属性没有自动关联。如果只是要注入组件,完全不需要设置id;但要是想用getId()获取标识,就必须通过上面两种方式配置id属性哦。

内容的提问来源于stack exchange,提问作者callum perks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:47:16