1.1 前言
1.1.1 为什么要出这个框架
记得从刚开始学习Java就开始接触JavaFX,从一开始的代码编写图形到后来通过FXML编写界面,一步步的学习之中逐渐领悟JavaFX的强大与灵活,我对JavaFX这门生不逢时的技术有了独特的感情,可以说JavaFX的强大不被许多人了解。
随着不断深入,我也渐渐发现JavaFx的设计思想在很多时候是无法满足当代程序开发思想的,并且一些功能并不是特别容易被使用,所以特定开发了一套简化开发JavaFx开发过程的框架供大家使用,希望能够简化大家的操作将精力专注于主要业务。
下面是我在开发过程中遇到的一些问题,我也针对这些问题做了简化操作。
1.1.2 FX缺点1 : 单一控制器臃肿
JavaFX中似乎都是一个Controller把所有的操作和控件囊括在里面,一个Controller有几百行甚至几千行,程序虽然不用考虑模块之间调用问题了,但是这几千行的代码却很难被管理。
图1 臃肿的controller
1.1.3 FX缺点2 : 控制类控制能力弱
JavaFX启动的Stage和Controller之间总是隔着远远的距离,并且由于Controller是由JavaFX注入生成的,所以很多非Controller的东西与Controller交流,导致了不得不得使用静态方法或者静态成员这类小技巧来实现交流,导致代码变"丑"
1.1.4 FX缺点3 : JavaBean无法使用Property
JavaFX的设计哲学是所有的JavaBean的属性都是property类型的,可是很多时候我们的JavaBean都是String,Integer这类基本类型,要重新修改类属性所带来的问题就足以让人让而却步了。
//普通JavaBean对象public class Student { private String name; private int age; private String gender; private String code; }//简单的JavaFX bean对象class Bill { // 定义一个变量存储属性 private DoubleProperty amountDue = new SimpleDoubleProperty(); // 定义一个getter方法获取属性值 public final double getAmountDue(){return amountDue.get();} // 定义一个setter方法设置属性值 public final void setAmountDue(double value){amountDue.set(value);} // 定义一个getter方法获取属性本身 public DoubleProperty amountDueProperty() {return amountDue;}}
1.1.5 总结
为了解决上述问题,我开发了一套增强JavaFX功能的框架,来起到简化JavaFX开发过程的问题。
1.2 特色一:模块化开发
1.2.1 介绍
在Java开发过程中很多界面是相似或者重复的,如果能够将这些界面打包成为一个自定义控件,并且通过Scenebuilder拖动就能产生一个控件那将会大大提高我们的开发效率。所以我们提