阅读本内容需要了解idea 基本使用技能
javafx 是一种新的java gui程序框架,其UI风格比较适用新的桌面程序开发。
因今日需要开发一套淘宝小工具,有两种架构可选;一是利用浏览器插件技术对数据集进行处理。另一种是利用桌面程序在本地进行数据处理。考虑到使用者对数据较为敏感,故使用第二种架构。
由于swing已经比较老旧,故选择已被集成到jre中的javafx 作为UI框架。在编写中遇到几个问题,作为第一次使用javafx 来说,稍微有点陌生。
1、程序结构
javafx 可分为stage scene control fxml 几个基本构件。 stage为舞台,scene为场景,其由stage装载;control作为控制器用来做逻辑编程。 fxml为可视化UI编程的结构化描述文件,可由scene builder 进行可视化编程,软件免费。
javafx 由application 主程序运行,继承Application 并在其中 放置main函数,Application的start函数即为程序的开始函数。
在程序编写中需要用到不同界面的切换,典型的场景为登陆后切换到主界面,一开始我是用了scene 切换,由一个stage装载,在程序运行中发现第二个scene的输入框无法正常获得输入数据,同时程序退出无法正常结束。 当我使用多个stage进行时,问题解决。
2、内置web
由于需要用到数据采集,而对方采用了复杂的登陆处理,普通模拟器难以胜任。 故采用httpunit 和 jxbrowser,httpunit可以模仿浏览器行为,而我的需求中并不需要完全屏蔽登陆过程。 考虑到工程复杂度,直接使用jxbrowser进行处理。这款软件为国外付费软件,是一款比较好的浏览器组件,支持多个平台,功能完备。
3、引入第三方库时打包问题
如果创建的是javafx 使用idea的话,会自动创建一个打包配置,只需要配置好最后一项即可。 选择好入口类和平台。
当项目中引入其它的库时,就需要注意了,默认库是下载到项目的lib文件下,在添加依赖库时可勾选否则不会下载到项目中。这时打包会提示找不到主类,因为lib库并没有被加入到生成文件中。 默认只会加载src类型的文件夹,而lib文件夹和src平级,这时需要将工程根目录设置为source 类型,即可解决无法找到入口类问题。