更新 README.md
This commit is contained in:
46
README.md
46
README.md
@@ -1,32 +1,32 @@
|
||||
|
||||
# JavaFX-Plus
|
||||
## **1.1 前言**
|
||||
|
||||
**1.1 前言**
|
||||
|
||||
**1.1.1 为什么要出这个框架**
|
||||
### **1.1.1 为什么要出这个框架**
|
||||
|
||||

|
||||
|
||||
记得从刚开始学习Java就开始接触JavaFX,从一开始的代码编写图形到后来通过FXML编写界面,一步步的学习之中逐渐领悟JavaFX的强大与灵活,我对JavaFX这门生不逢时的技术有了独特的感情,可以说JavaFX的强大不被许多人了解。
|
||||
记得从刚开始学习Java就开始接触JavaFX,从一开始的代码编写图形到后来通过FXML编写界面,一步步的学习之中逐渐领悟JavaFX的强大与灵活,我对JavaFX这门生不逢时的技术有了独特的感情,可以说JavaFX的强大不被许多人了解。
|
||||
|
||||
随着不断深入,我也渐渐发现JavaFx的设计思想在很多时候是无法满足当代程序开发思想的,并且一些功能并不是特别容易被使用,所以特定开发了一套简化开发JavaFx开发过程的框架供大家使用,希望能够简化大家的操作将精力专注于主要业务。
|
||||
随着不断深入,我也渐渐发现JavaFx的设计思想在很多时候是无法满足当代程序开发思想的,并且一些功能并不是特别容易被使用,所以特定开发了一套简化开发JavaFx开发过程的框架供大家使用,希望能够简化大家的操作将精力专注于主要业务。
|
||||
|
||||
下面是我在开发过程中遇到的一些问题,我也针对这些问题做了简化操作。
|
||||
下面是我在开发过程中遇到的一些问题,我也针对这些问题做了简化操作。
|
||||
|
||||
**1.1.2 FX缺点1 : 单一控制器臃肿**
|
||||
### **1.1.2 FX缺点1 : 单一控制器臃肿**
|
||||
|
||||
JavaFX中似乎都是一个Controller把所有的操作和控件囊括在里面,一个Controller有几百行甚至几千行,程序虽然不用考虑模块之间调用问题了,但是这几千行的代码却很难被管理。
|
||||
JavaFX中似乎都是一个Controller把所有的操作和控件囊括在里面,一个Controller有几百行甚至几千行,程序虽然不用考虑模块之间调用问题了,但是这几千行的代码却很难被管理。
|
||||
|
||||

|
||||
|
||||
图1 臃肿的controller
|
||||
|
||||
**1.1.3 FX缺点2 : 控制类控制能力弱**
|
||||
### **1.1.3 FX缺点2 : 控制类控制能力弱**
|
||||
|
||||
JavaFX启动的Stage和Controller之间总是隔着远远的距离,并且由于Controller是由JavaFX注入生成的,所以很多非Controller的东西与Controller交流,导致了不得不得使用静态方法或者静态成员这类小技巧来实现交流,导致代码变"丑"
|
||||
JavaFX启动的Stage和Controller之间总是隔着远远的距离,并且由于Controller是由JavaFX注入生成的,所以很多非Controller的东西与Controller交流,导致了不得不得使用静态方法或者静态成员这类小技巧来实现交流,导致代码变"丑"
|
||||
|
||||
**1.1.4 FX缺点3 : JavaBean无法使用Property**
|
||||
### **1.1.4 FX缺点3 : JavaBean无法使用Property**
|
||||
|
||||
JavaFX的设计哲学是所有的JavaBean的属性都是property类型的,可是很多时候我们的JavaBean都是String,Integer这类基本类型,要重新修改类属性所带来的问题就足以让人让而却步了。
|
||||
JavaFX的设计哲学是所有的JavaBean的属性都是property类型的,可是很多时候我们的JavaBean都是String,Integer这类基本类型,要重新修改类属性所带来的问题就足以让人让而却步了。
|
||||
|
||||
```java
|
||||
//普通JavaBean对象
|
||||
@@ -63,17 +63,17 @@ class Bill {
|
||||
}
|
||||
```
|
||||
|
||||
**1.1.5 总结**
|
||||
### **1.1.5 总结**
|
||||
|
||||
为了解决上述问题,我开发了一套增强JavaFX功能的框架,来起到简化JavaFX开发过程的问题。
|
||||
|
||||
**1.2 特色一:模块化开发**
|
||||
## **1.2 特色一:模块化开发**
|
||||
|
||||
1.2.1 介绍
|
||||
### 1.2.1 介绍
|
||||
|
||||
在Java开发过程中很多界面是相似或者重复的,如果能够将这些界面打包成为一个自定义控件,并且通过Scenebuilder拖动就能产生一个控件那将会大大提高我们的开发效率。所以我们提出将不同区域划分为不同的子模块,已达到减少耦合和加速并行开发。一般我们经常把界面分为顶部工具栏,左边导航栏,右侧的内容栏,如果全部内容都写在一个Controller那么将会导致十分臃肿,我们希望将不同的区域划分开来分而治之。
|
||||
|
||||
1.2.2 如何创建模块
|
||||
### 1.2.2 如何创建模块
|
||||
|
||||
只要新建一个类继承自FXBaseController,而FXBaseController是继承于Pane,这就是JavaFX-Plus的设计思想之一切皆为Pane。在类上标上FXController注解,提供FXML文件的地址。如果设置为FXWindow那么将会把这个Controller以单独的Window显示,这里仅仅几句代码就实现了一个简单的窗口程序。
|
||||
|
||||
@@ -85,13 +85,13 @@ class Bill {
|
||||
|
||||
图3 显示结果
|
||||
|
||||
1.2.3 scenebuilder中导入刚刚生成的上面的控件
|
||||
### 1.2.3 scenebuilder中导入刚刚生成的上面的控件
|
||||
|
||||

|
||||
|
||||
图4 模块化操作
|
||||
|
||||
**1.3 特色2 :信号机制**
|
||||
## **1.3 特色2 :信号机制**
|
||||
|
||||
有两个主要标签一个是FXSender,这个标签作用在方法上,标记这个方法为信号发射方法。可以通过设置name修改这个信号发射方法的名称,默认是函数名字。
|
||||
|
||||
@@ -132,7 +132,7 @@ public class MainController extends FXBaseController{
|
||||
|
||||

|
||||
|
||||
**1.4 特色3 :JavaBean 和 JavaFxBean**
|
||||
## **1.4 特色3 :JavaBean 和 JavaFxBean**
|
||||
|
||||
一般我们写的JavaBean都是基本类型的,但是JavaFXBean的设计哲学是这些属性都应该是JavaFX定义的Property类型,这十分不利于我们的开发,我们如何在不修改JavaBean的条件下,使用到JavaFX的Property的一些优良方法呢?答案是我们通过反射获得基本类型对应的Property(目前仅限于boolean,double,integer,long,string,float等基本类型,不支持List等封装对象。)
|
||||
|
||||
@@ -244,9 +244,9 @@ public class Student {
|
||||
|
||||
|
||||
|
||||
**2 如何使用这个框架**
|
||||
## **2.1 如何使用这个框架**
|
||||
|
||||
2.1 了解内置注解
|
||||
### 2.1.1 了解内置注解
|
||||
|
||||
| 名字 | 作用 | 参数 | 要求 |
|
||||
| ------------- | ------------------------------------------------------------ | --------------------------------------- | -------------------- |
|
||||
@@ -258,7 +258,7 @@ public class Student {
|
||||
| @FXSender | 信号发送者 | name可以重命名信号 | |
|
||||
| @FXReceiver | 信号接收函数 | name是订阅的发射者函数名 | 不可空 |
|
||||
|
||||
2.2 两个工厂和一个context
|
||||
### 2.1.2 两个工厂和一个context
|
||||
|
||||
在JavaFX-Plus中所有Controller对象和FXEnity对象都必须通过工厂创建。
|
||||
|
||||
@@ -272,7 +272,7 @@ student = (Student) FXEntityFactory.getInstance().createJavaBeanProxy(Student.cl
|
||||
MainController mainController = (MainController)FXFactory.getFXController(MainController.class);
|
||||
```
|
||||
|
||||
2.3 第一个Demo如何使用框架创建第一个程序
|
||||
## 3.1 第一个Demo如何使用框架创建第一个程序
|
||||
|
||||
```java
|
||||
@FXScan(base = {"cn.edu.scau.biubiusuisui.example"}) //会扫描带FXController和FXEntity的类进行初始化
|
||||
|
||||
Reference in New Issue
Block a user