Java开发桌面程序学习(九)——JavaFxTemplate JavaFx模版 更简单进行JavaFx程序开发
本文为作者原创,允许转载,不过请在文章开头明显处注明链接和出处!!! 谢谢配合~
作者:stars-one
链接:https://www.cnblogs.com/stars-one/p/11096335.html
本篇大约有2792个字,阅读预计需要3.49分钟
JavaFxTemplate
使用说明
项目基于maven,请确保maven配置成功,否则,可能会出现问题
项目内置了commons-io的jar包,Jfoenix的jar包以及常用的工具类JFxUtils
,具体使用请看注释!
原本是想将JFxUtils
单独出来,打成一个jar包,不过,项目引用之后一起打成jar包,项目的jar包跑不起来,报找不到类的错误。
复制该项目,修改项目名,之后修改pom.xml中的 groupId,artifactId,version。
打开IDEA,Main.java的里面需要重新导入一下包名,之后即可成功运行。
打jar包的时候,需要注意,把META-INF的路径设置在out目录下,否则,运行jar包会失败,如下图
JFxUtils使用说明
介绍
这是一个JFX的工具库,Intent可以简单地实现打开一个新窗口并传递数据,DialogBuilder可以简单地生成对话框,MyUtils有些常用的功能
使用
- MyUtils 封装了一些常用的的方法
- Intent与BaseController 打开新窗口,并传递数据
- DialogBuilder 基于Jfoenix,快速生成material Design风格的对话框
Intent的使用
使用Intent,可以打开一个新窗口,还能传递数据
如何使用?
打开一个新窗口
步骤:new一个Intent,调用start方法即可
下面是几种不同的构造方法
- Intent(String fxmlName)
- Intent(String fxmlName, String title)
- Intent(String fxmlName, String title,String iconName)
- Intent(String fxmlName, int width, int height)
- Intent(String fxmlName, int width, int height, String title)
- Intent(String fxmlName, int width, int height, String title, String iconName)
PS:
fxmlName
fxml的名字,不需要写扩展名iconName
图标名,需要写扩展名
例子:
- 简单例子
//在一个controller中
//fxml名字为test
//默认宽高 600*400
Intent intent = new Intent("test");
//打开新窗口
intent.start();
- 设置标题
Intent intent = new Intent("test","hello world");
intent.start();
- 设置宽高
Intent intent = new Intent("test",800,400);
intent.start();
打开新窗口并传递数据
本工具中,有一个BaseController
,想要传递数据,就得让controller
继承这个BaseController
,之后,new一个intent
,使用addData
方法传入数据
可以传递的数据类型有int
,boolean
,String
,List
,Object
- addData(String key, int data)
- addData(String key, boolean data)
- addData(String key, String data)
- addData(String key, List<?> data)
- addData(String key, Object data)
在controller中getIntent得到intent的实例,之后通过以下方法获得数据
- getDataInteger(String key)
- getDataBoolean(String key)
- getDataString(String key)
- getDataList(String key,Class
clazz) - getDataObject(String key) 需要转型
例子:
//某个controller中打开新窗口,并传递list数据
Intent intent = new Intent("test",800,400);
intent.addData("list",studentlist);
intent.start();
//test对应的controller,接收list数据
package wan.dormsystem.controller;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
import wan.dormsystem.bean.Student;
/**
* @author StarsOne
* @date Create in 2019/6/21 0021 16:44
* @description
*/
public class TestController extends BaseController {
@Override
public void initialize(URL location, ResourceBundle resources) {
//这里一定要有判断,不然会有空指针异常
if (getIntent() != null) {
List<Student> list = getIntent().getDataList("list", Student.class);
for (Student student : list) {
System.out.println(student.toString());
}
}
}
}
DialogBuilder
MyUtils
- closeWindow(Control control) 关闭窗口
- Image getImg(String fileName) 获得图片
- void setLinkAutoAction(Hyperlink hyperlink) 设置链接自动跳转
- void setLinkAction(Hyperlink hyperlink, LinkActionHander hander) 设置链接点击事件
更多使用详情,可以直接去JavaFxTemplate中的具体类中查看
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· DeepSeek智能编程
· 精选4款基于.NET开源、功能强大的通讯调试工具
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
2018-06-27 Android破解学习之路(九)—— 练手破解游戏集合
2018-06-27 Android破解学习之路(八)—— 进化之地内购破解