JavaFx
2021-11-02 13:59:53 43 举报
AI智能生成
JavaFX是一个强大的图形用户界面(GUI)框架,用于创建和构建跨平台的桌面应用程序。它是Java语言的一部分,提供了丰富的功能和工具,使开发者能够轻松地设计和实现吸引人的用户界面。JavaFX基于JavaFX Script,这是一种声明式编程语言,类似于HTML和CSS,使得布局和设计更加直观和易于管理。JavaFX还支持动画、音频和视频处理,以及各种交互功能,如拖放、缩放和旋转等。通过JavaFX,开发者可以创建出具有高度可定制性和响应性的应用程序,满足不同平台和设备的需求。总之,JavaFX是一个强大且灵活的工具,适用于开发各种类型的桌面应用程序。
作者其他创作
大纲/内容
版本说明
JavaFX2
JavaFX8
优点
支持比较稳定的JDK8版本
支持大部分打包方式
Maven、Gradle、JPackage等
Maven、Gradle、JPackage等
组件库比较丰富
ControlsFX、Metro、JFoenix等
ControlsFX、Metro、JFoenix等
有现成的Springboot支持
JavaFX-Springboot-support
JavaFX-Springboot-support
缺点
开发时需要依赖整个JDK
打包成可执行文件后整个包比较大
光JRE部分可能就已经超100M
光JRE部分可能就已经超100M
JavaFX9
Java FX11
优点
支持比较稳定的JDK11版本
支持大部分打包方式
Jlink、Maven、Gradle、JPackage等
Jlink、Maven、Gradle、JPackage等
支持JDK11的相关组件库
ControlsFX、Metro等
ControlsFX、Metro等
Jlink打包后体积缩小很多
除去程序部分,运行环境可以在30-50M左右
除去程序部分,运行环境可以在30-50M左右
使用Open-Javafx作为开发依赖
缺点
不支持Springboot
如要使使其支持,需要按照JDK11重写JavaFX-springboot-support
如要使使其支持,需要按照JDK11重写JavaFX-springboot-support
开发稍微复杂一些
模块化开发需要配置module信息
模块化开发需要配置module信息
组件库支持少
前期环境搭建耗时比较多一些
结构及使用
结构
FXML
头部信息
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
导入库信息
可以通过import标签来导入页面所需要的组件库
可以通过import标签来导入页面所需要的组件库
视图内容信息
通过xml标签形式将组件放置内容在fxml内
通过xml标签形式将组件放置内容在fxml内
指定Controller
在跟节点中指定fx:controller信息
在跟节点中指定fx:controller信息
页面标签指定在Controller中对应的控件实例
在需要映射的控件标签内添加fx:id属性并指定对应的名称
注意:指定的实例名称以及类型都要与标签的类型以及fx:id一致
在需要映射的控件标签内添加fx:id属性并指定对应的名称
注意:指定的实例名称以及类型都要与标签的类型以及fx:id一致
Controller
Controller类需要javafx.fxml.Initializable
并重写initialize方法,在此方法内可以进行一些初始化过程
并重写initialize方法,在此方法内可以进行一些初始化过程
fxml中实例映射
创建一个类型与FXML中标签类型一致,
实例名称与FXML中的名称一致的控件标签(大小写敏感)
创建一个类型与FXML中标签类型一致,
实例名称与FXML中的名称一致的控件标签(大小写敏感)
布局控件
顶层布局,即主窗口(系统窗口)
Stage
Stage
场景布局(可相互嵌套)
AnchorePane、BorderPane、FlowPane、GridPane、
HBox、StackPane、TilePane、VBox、ScrollerPane、
SplitPane、TabPane、Group等
AnchorePane、BorderPane、FlowPane、GridPane、
HBox、StackPane、TilePane、VBox、ScrollerPane、
SplitPane、TabPane、Group等
基础控件
功能控件
CheckBox、ChoiceBox、ColorPicker、TextField、DatePicker、
ListView、Menu、ProcessBar、TableView、TreeView、ChartView等
CheckBox、ChoiceBox、ColorPicker、TextField、DatePicker、
ListView、Menu、ProcessBar、TableView、TreeView、ChartView等
图形控件(2d与3d)
Arc、Box、Circle、Line、Polygon、Rectangle、
SVGPath、Text
Arc、Box、Circle、Line、Polygon、Rectangle、
SVGPath、Text
监听
ChangeListener(改变监听)
相关Properties类中都会有此监听性设置,
用于当值改变时触发相关逻辑
相关Properties类中都会有此监听性设置,
用于当值改变时触发相关逻辑
EventHandler(事件监听)
主要以鼠标事件、键盘事件等监听为主
主要以鼠标事件、键盘事件等监听为主
使用及开发
开发工具
IntelliJ IDEA
JavaFX Scene Builder 8.5.0
FXML布局开发辅助工具
FXML布局开发辅助工具
开发过程
创建入口
1.需要创建一个入口类并继承javafx.application.Application
2.重写start方法,在start方法中引用加入指定初始场景至Stage中
3.通过launch方法启动JavaFX程序
1.需要创建一个入口类并继承javafx.application.Application
2.重写start方法,在start方法中引用加入指定初始场景至Stage中
3.通过launch方法启动JavaFX程序
加载主场景
1.利用FXMLLoader将指定位置的FXML加载到程序中,并获取Parent(Node)
2.Stage中创建一个Scene并将scene的root指定为设定为loader加载的Parent
1.利用FXMLLoader将指定位置的FXML加载到程序中,并获取Parent(Node)
2.Stage中创建一个Scene并将scene的root指定为设定为loader加载的Parent
切换场景
1.可以在Stage中通过设置不同的Scene来切换
2.可以通过主场景中布局控件的Children切换(此方式用的比较多)
1.可以在Stage中通过设置不同的Scene来切换
2.可以通过主场景中布局控件的Children切换(此方式用的比较多)
控件属性绑定(很重要)
每个Property中都有一个Bind方法,如果进行a.bind(b)时,
程序将监听放入b一个触发链中,只需触发b的property change事件a也会被触发
每个Property中都有一个Bind方法,如果进行a.bind(b)时,
程序将监听放入b一个触发链中,只需触发b的property change事件a也会被触发
自定义组件
创建Control
继承javafx.scene.control.Control
加入控件属性属性主要为Property类型
继承javafx.scene.control.Control
加入控件属性属性主要为Property类型
创建Skin
实现javafx.scene.control.Skinnable接口
编写视图样式,以及组件主要功能
实现javafx.scene.control.Skinnable接口
编写视图样式,以及组件主要功能
0 条评论
下一页