javafx非控制类获取控制类的控制器

本文探讨了在JavaFX应用程序中,如何在非控制器类中访问和使用控制器来修改界面。通常,FXML中的组件修改需通过对应的控制器进行。当需要在其他类中调用控制器方法时,可以通过传递控制器实例或者创建中间类来实现。文中详细介绍了两种方法,包括直接传递控制器和使用中间类作为桥梁,强调了获取控制器对象的时机是在Scene加载之后。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看下面的图,以官网的例子说事(我自己写的分包可能比较乱,不容易看明白,官网例子没有分包)
在这里插入图片描述
App是启动类,下面有两个控制器,同时也有两个fxml文件对应这两个控制器。对于fxml中定义的组件(按钮、文本框等),如果我们要修改他们的值,比如让某个文本框显示某些东西,我们只能通过与该fxml对应的控制类进行修改。如果需要在其他类修改呢?那就必须获得这个控制器才行。

看我的代码:
在这里插入图片描述
我需要在其他类里面调用控制类的方法对界面进行修改(修改只能在控制类修改),可能想到一个很简单的方法,在其他类里面new一个控制类的对象然后调用,然后,这个对象只能调用不是更改页面的方法,如果该方法里面包含了修改页面的代码,不如设置文本框的值,那就会报错。比如下面的代码,对象只有调用test才不会报错,因为它只是简单的输出,并没有关系到页面的改。

在这里插入图片描述
前面说了,要修改,就要获取控制器,所以现在 来说一下一个笨拙的方法:把控制器传给其他类。如下,两个 方法

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值