给SpringBoot Web应用配上JavaFx漂亮衣服
Java技术
- 给SpringBoot Web应用配上JavaFx漂亮衣服
- SpringBoot
- 上代码
- 小结
给SpringBoot Web应用配上JavaFx漂亮衣服
提到Java开发的Web程序,第一印象就是一个黑色的窗口,里面滚动着杂乱的信息。对于服务器应用来说,无所谓这一点。如果你的应用需要发布到桌面,你就需要好好地考虑这一点了。有了JavaFX,可以帮你克服用户的恐怖心理。
SpringBoot
SpringBoot结合JavaFX,可以使得我们在JavaFx程序中采用Spring才提供的IOC、注解等特性。但是,众所周知,SpringBoot有一个较长的启动过程和启动时间,影响用户的体验。可否先展示程序的主界面,在界面加载后在运行SpringBoot。于是,最好先启动JavaFx,然后在JavaFx的初始化过程中,在另一个线程中启动SpringBoot。
上代码
// 图形模式启动
public class GuiConsoleApplication extends Application {private static Logger logger = LoggerFactory.getLogger(GuiConsoleApplication.class);private static String[] savedArgs = null;private static ConfigurableApplicationContext applicationContext = null;public static void main(String[] args) {savedArgs = args;Application.launch(GuiConsoleApplication.class, args);}public void init() throws Exception {CompletableFuture.supplyAsync(() -> Db2webApplication.run(savedArgs)).whenComplete((ctx, throwable) -> {if (throwable != null) {logger.error("Failed to load spring application context: ", throwable);Platform.runLater(() -> {showErrorAlert(throwable);});} else {Platform.runLater(() -> {applicationContext = ctx;});}});}@Overridepublic void start(Stage stage) throws Exception {FXMLLoader loader = new FXMLLoader(getClass().getResource("/views/consoleView.fxml"));Parent root = loader.load();// FxMainPageController controller = loader.getController();Scene scene = new Scene(root);scene.getStylesheets().add(getClass().getResource("/views/consoleView.css").toExternalForm());stage.setTitle("数据转Web服务");stage.getIcons().add(new Image("/images/console.ico"));stage.setScene(scene);stage.setResizable(false);
// stage.initStyle(StageStyle.UNDECORATED);
// stage.setOnShown((event) -> {// ConsoleApplication.doUpdate(pathname);
// });stage.setOnCloseRequest((event) -> System.exit(0));stage.show();}public static void relaunch() {Platform.runLater(() -> {try {// 关闭ApplicationContextif (applicationContext != null) {applicationContext.close();}Application.launch(GuiConsoleApplication.class, savedArgs);} catch (Exception e) {logger.error(e.getMessage());}});}private static void showErrorAlert(Throwable throwable) {Alert alert = new Alert(Alert.AlertType.ERROR, "Fatal error occurred.The application will exit now.Error: \n\n" + throwable.getMessage(), new ButtonType[0]);alert.showAndWait().ifPresent((response) -> {Platform.exit();});}
}
小结
不同于springboot-javafx-support技术,我们仅仅需要的是将SpringBoot Web应用表现为一个普通的本地应用程序。这里将JavaFX图形界面与SpringBoot Web服务结合在一起,且避开SpringBoot启动过程。配合Exe4j等工具,就具备了将Java Web应用作为本地应用程序部署和使用的能力,便于初级用户使用。
一般来说,这里的图形界面主要是监控和管理SpringBoot服务功能,为普通用户提供一个易操作、易控制的服务应用。
给SpringBoot Web应用配上JavaFx漂亮衣服相关推荐
- php实现视频中合成文字,几个视频合并 把照片也加进去 然后配上文字?
2017-04-17 逛逛 14:17:17 你好 逛逛 14:17:18 在么 逛逛 14:17:53 我是想把手机里的视频剪辑成一个大d 逛逛 14:17:57 需要买咱们的软件吗 逛逛 14:1 ...
- springboot+web文件上传和下载
一.首先安装mysql数据库,开启web服务器. 二.pom.xml文件依赖包配置如下: <?xml version="1.0" encoding="UTF-8&q ...
- springboot 设置默认访问index.html_【SpringBoot WEB系列】WebFlux静态资源配置与访问
[SpringBoot WEB系列]WebFlux静态资源配置与访问 上一篇博文介绍SpringMVC的静态资源访问,那么在WebFlux中,静态资源的访问姿势是否一致呢 I. 默认配置 与Sprin ...
- SpringBoot WEB 核心原理
学习SpringBoot WEB部分我们有几个疑问,如下: 1 SpringBoot如何实现默认使用Tomcat作为servlet容器的? 2 如何配置jetty作为servlet容器? 3 Spri ...
- Springboot Web应用中服务器配置参数ServerProperties的加载
#概述 Springboot配置文件中以server开头的项表示服务器的配置参数,这一点从字面意义即可直观理解,这些参数,包括端口,路径设置,SSL配置参数等等.具体有哪些参数,从源代码的角度上,可以 ...
- SpringBoot整合Shiro学习(上)
SpringBoot整合Shiro(上) 基于[编程不良人]2020最新版Shiro教程,整合SpringBoot项目实战教程 哔哩哔哩链接:https://www.bilibili.com/vide ...
- 视频教程-SpringBoot Web项目案例视频课程-Java
SpringBoot Web项目案例视频课程 拥有10余年项目实战经验. 2006-2011在nttdata从事对日软件开发类工作. 2011-2015在HP从事技术服务工作. 擅长于j2ee相关的软 ...
- springboot嵌入tomcat文件上传,虚拟路径配置
场景: 如果是独立的tomcat,我们直接将文件上传到tomcat的web路径下即可进行访问 对于springboot内嵌的tomcat,当我们启动jar包时,不可能将文件上传到tomcat路径下,这 ...
- 【阿里云生活物联网架构师专题 ⑧】基于在 SpringBoot Java私有云上接收阿里云物联网设备的各种状态数据,实现m2m流转;
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.esp32接入阿里云物联网平台,实现天猫精灵语音控制: 2.es ...
最新文章
- 开源软硬一体OpenCV AI Kit(OAK)
- 测试Animation大型动画文件拆分播放的可行性
- 浅谈Delphi过程与函数02 - 零基础入门学习Delphi21
- 你有哪些deep learning(rnn、cnn)调参的经验
- 视觉激光融合——VLOAM / LIMO算法解析
- 中南民族大学计算机类有什么具体专业,中南民族大学计算机科学学院计算机科学与技术专业简介...
- Python File 介绍
- 第1课 编程是一门技术_动动脑 第1题
- jquery 自动完成 Autocomplete
- java 树最大距离_寻找二叉树最远的叶子结点(实例讲解)
- 基于单片机的电子秤系统设计(电路+流程)
- 软件测试验收方法_验收测试是美丽的魔术。 这就是它可以改善您的生活的方法。...
- Base64的编码与解码的实现方法(超详细,每一行代码都含注释)
- 漫谈程序员系列 软件开发的十八般乐趣
- python+微信+腾讯智能闲聊
- python识别文字软件_【Python 教程】使用 Python 和大漠插件进行文字识别
- 【系统设计】系统设计基础:速率限制器
- X86 将死?RISC-V 正当立
- 随机生成1万个随机姓名与密码存入txt文本中
- Succ(x),Pred(X),inc(x,i),dec(x,i)