最近使用JavaFX开发了一个PC客户端,代码行在15K左右,重构了三次,才最终产品上线使用,在这个过程中走了很多的弯路,在此总结一下。
(1)JavaFX开发优点
- JavaFX是类似Android的开发模式,界面布局使用FXML,使用scene builder可以直接拖拽控件进行布局,可视化的布局。
- 界面支持CSS调样式。
- 支持ResourceBoundle,进行国际化设置。
- 控件多,灵活,支持图表展示和WebView
(2)项目架构
项目采用MVC架构+事件驱动层,因为界面的更新实现都在Controller中,如果需要在后台线程中更新界面操作,总不能把Controller对象传递给线程吧,这样就出现了类之间的相互调用,代码比较乱,这时候就需要再加一层,事件驱动层,设计模式中的监听器模式,在Controller中注册Model的监听接口,在线程中更新了Model对象,Model对象回调在Controller中注册的接口。
M:Model,也就是一个个数据对象。
V:View,界面展示,使用FXML进行页面布局。
C:Controller,控制层,界面的更新操作以及按钮的响应事件都在Controller更新。
事件驱动层:Model对象的监听器
(3)注意事项
- 对界面的更新操作需要放到Platform.runLater线程中。
Platform.runLater(new Runnable()
{
@Override
public void run()
{
//update ui
}
});