麒麟正青春

 

javafx中controller与fxml及参数传值-1-2

参考自: https://www.bilibili.com/video/BV1tt4y1W7nY?spm_id_from=333.788.videopod.sections&vd_source=137b7db2f57c3cb63d8af247fefc66e0

 一、去掉controller及其应用场景

  方法1:获取全部子节点集合,根据索引查找组件,缺点是:不容易弄清节点间关系

 

    定义test.fxml    

    

 

    在程序中加载fxml,根据节点关系调用控件进行操作 ,加载后AnchorPane对应root。

     

    

   方法2、通过css选择器选择组件(style-class,Node id ..)

    通过组件选择器查找,如TextField、Button等,不推荐使用

    

     使用css选择器如文本框的默认css选择器:.text-field 或 定义css的id选择器如:#cssBtn

     

    

    

   方法3、通过fxid来查找组件或者其他区具有fxid的对象 

    

     定义组件文本框fx:id为tf,组件按钮fx:id为btn

    

     

 

二、controller有参构造器

  方法1、setcontrollerFactory来设置控制器

    说明:若需自定义控制器,需确保FXML文件中‌不设置‌fx:controller属性,或通过setControllerFactory()覆盖其默认行为‌    

     

    fxml页面中已经引入了控制器,fxmlloader加载时默认执行了初始化构造,再次通过 fxmlLoader.setController(new MainController1("起飞"));传递参数构造会出现错误。

    

     通过工厂方式传参  fxmlLoader.setControllerFactory(t-》new MainController1("起飞"));覆盖其默认行为‌,正确远行

    

    通过controller类实现接口Initializable重载initialize(url locatio,resourcebundle)实现初始化,该方法过时了

    

     建议方式,可以通过注解方式处理,实现同样效果,controller类不再实现接口Initializable,

    可以在scenebuilder中打开fxml文件,菜单--view-- show sample skeleton 如下

    public class MainbbController {

      @FXML
      private ResourceBundle resources;

      @FXML
      private URL location; 

      @FXML
      void initialize() {        

        }

      }

    

    

      

    

    初始化正确传值

      

  方法2、当布局文件没有指定controller的时候,可以使用setcontroller来指定一个控制器

     布局文件中不指定controller

    

     使用fxmlLoader.setController(new MainController1("起飞"));方法传参

    

     正确处理    

    

     应用,处理网页调用,在application.gethostservices().showdocument("https://www.baidu.com");

    

    

    

 三、多controller,多stage通信与传值   

       javafx中controller与fxml及参数传值-3

   四、事件总线eventbus  

      javafx中controller与fxml及参数传值-4

posted on   麒麟正青春  阅读(7)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

导航

点击右上角即可分享
微信分享提示