我创建了自定义组件TableBlock . 它由Label和TableView组成 . 例如,TableView可以有1到1000行 . 行数由FXML文件中的参数“rowsFromPrefs”定义 . 创建TableView需要此参数 . TableView完全由JAva代码创建,fxml只是它的标签和带有多行的参数 .

据我所知,当JavaFX构造FXML组件时,它首先调用构造函数,然后调用@FXML注释字段,然后启动initialize()方法 .

在我的情况下,当initialize()开始时,变量rowsFromPrefs仍为null!但是,如果我试图从其他线程(而不是JavaFX-launcher)获取rowsFromPrefs的值,我看到它定义=“2”就像它应该的那样 .

所以我无法理解Java在什么时候从FXML文件中分配对象参数 . 如何在创建时将参数从fxml文件传递给对象 .

我看到了构造函数参数的@NamedArg注释 . 它是创建对象时传递参数的唯一方法吗?

控制器可以定义一个initialize()方法,当相关文档的内容已经完全加载时,该方法将在实现控制器上调用一次:

TableBlock.java

public class TableBlock extends VBox{

@FXML

private String rowsFromPrefs;

@FXML

private Label label;

public TableBlock() {

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("TableBlock.fxml"));

fxmlLoader.setRoot(this);

fxmlLoader.setController(this);

try {

fxmlLoader.load();

} catch (IOException e) {

e.printStackTrace();

}

}

@FXML

public void initialize() {

this.table = createTable(rowsFromPrefs);

}

public String getRowsFromPrefs() {

System.out.println("getRowsFromPrefs");

return rowsFromPrefs;

}

public void setRowsFromPrefs(String rowsFromPrefs) {

this.rowsFromPrefs = rowsFromPrefs;

}

}

TableBlock.fxml

View.java

public class View extends Application {

Parent root = null;

private Scene scene;

@Override

public void init() {

try {

root = FXMLLoader.load(getClass().getResource("View.fxml"));

root.requestLayout();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

public void start(final Stage stage) throws Exception {

scene = new Scene(root, 640, 480, Color.LIGHTGRAY);

stage.show();

}

public static void main(String[] args) {

launch(args);

}

}

View.fxml

java 属性自定义配置,将自定义FXML属性设置为自定义javafx组件的参数相关推荐

  1. creo自定义调用零件库_Creo 5.0 设置调用自定义标准件(标准零件库)的方法

    问题来源:library 里的标准件怎么才能被找到 装配组件调用了自定义的标准零件库的零件保存关闭 Creo 后,再次打开组件时找不到标准件的解决方法. 注:本帖以 Windows 10 下,以很多会 ...

  2. SpringBoot(2)之自定义配置

    2019独角兽企业重金招聘Python工程师标准>>> 覆盖 Spring Boot 自动配置 使用SpringSecurity <dependency><grou ...

  3. 自定义配置节 Section

    项目中遇到需求:随时通过增删改配置文件中配置节,来修改程序获取的配置,这里应用到自定义配置节section  type="System.Configuration.NameValueSect ...

  4. java generatorconfig_generatorConfig.xml配置信息详细

    mybatis-generator有三种用法:命令行.eclipse插件.maven插件.我的以为maven插件最方便,能够在eclipse/intellij idea等ide上能够通用.html 下 ...

  5. vue中is属性搭配vuedraggable插件实现可拖动可视化大屏展示组件的自定义配置功能

    最近有这样一个需求,将大屏上展示的东西都封装成独立的组件让用户自己可以自定义配置自己的组件位置及想要展示的组件,第一个我就想到通过is来实现,分享下我的思路及部分代码供大家参考. 先看下大概布局: 如 ...

  6. java自定义注解实现校验对象属性是否为空

    前面学习了如何自定义一个注解:java如何优雅的自定义一个注解 下面来实战演示一下如何使用自定义注解做一些实际的功能.比如校验对象属性是否为空. 一.自定义一个NotNull注解 我们自定义一个Not ...

  7. vue、vue 所有图标属性、vue Icon 所有图标属性、vue 图标所有类型属性、vue 自定义图标 Icon属性

    vue.vue 所有图标属性.vue Icon 所有图标属性.vue 图标所有类型属性.vue 自定义图标 Icon属性 使用方法 1.线框风格 1.方向性图标 2.提示建议性图标 3.编辑类图标 4 ...

  8. 如何在自定义指令中获取评估属性

    本文翻译自:How to get evaluated attributes inside a custom directive I'm trying to get an evaluated attri ...

  9. mybatis解决字段和属性的映射关系3 - 通过resultMap设置自定义映射关系

    本节我们将探索mybatis解决字段和属性的映射关系3 - 通过resultMap设置自定义映射关系 目录 1.接口和pojo实体类 2.mapper映射文件 2.1 resultMap 2.2 re ...

最新文章

  1. 计算机竞赛CCC可以直接学吗,CCC 计算机竞赛到底有多牛!
  2. 不借助第三方 Windows 7搞定无法删除文件
  3. 疫情之下第一个倒闭航空公司:百年老店Avianca申请破产保护,国内民航也不乐观...
  4. 搭建prometheus+grafana监控系统
  5. MySQL带DISTINCT关键字的查询
  6. 一致性协议raft详解(一):raft整体介绍
  7. java中泛型上限,下限应用
  8. Python学习入门7:python学习从基础到高手,再到就业
  9. 五一档票房超8.8亿元!张艺谋新片仅第二
  10. 工作流流程部署 一般功能代码
  11. 计算某日是该年的第几天
  12. bzoj 2844: albus就是要第一个出场
  13. 微信公众平台开发(一) 申请微信公众账号
  14. 康托尔点集matlab实数,为什么康托尔集内的数和实数个数一样多
  15. 机器视觉:工业相机专业词汇中英文详解
  16. 如何锻炼腹肌更加有效?
  17. 听《正面管教》,论如何教育孩子
  18. Excel读写工具类
  19. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本
  20. 小点滴——word页码页眉问题——摘自贴吧

热门文章

  1. javascript跳跃式前进(3) - 跳入JSON
  2. 经营成功的测试职业生涯
  3. OAuth2.0 基础概述
  4. struts2.2.3需包含的jar包
  5. SharePoint 2007部署过程详细图解之一:准备
  6. centos7升级自带的php5.4版本到php5.6
  7. 《Java多线程编程核心技术》读后感(七)
  8. 人工智能:决胜未来之道培训课程大纲
  9. bzoj[1835][ZJOI2010]base 基地选址
  10. BZOJ 4679/Hdu5331 Simple Problem LCT or 树链剖分