JavaFx开发:一招教会你JavaFx程序制作软件视频欢迎页
Posted fntp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaFx开发:一招教会你JavaFx程序制作软件视频欢迎页相关的知识,希望对你有一定的参考价值。
各位看官老爷大家好,我是fntp,本期博客推出Java桌面开发系列教程之JavaFx软件启动视频欢迎页!相信仍然有很多兄弟跟我一样痴迷于JavaGUI桌面领域的开发,我研究Java-GUI已经有很长一段时间了,从AWT框架走过到SWT&JFace框架再到Swing,再到现在的JavaFx,我使用的JavaFx是基于JDK11+的,很多库都来自Gluon的JavaFx。
我先阐明一下为什么要写这篇博客呢?因为我发现了一个非常严重的问题,那就是其实很多新手Java入坑Java的时候就关注到了Java的GUI开发,例如SWT与JavaFx,SWT俨然在中国成为了过去式,但是其实SWT在国外(毛子和越南人)还是有一定的占有率的,新手在入坑GUI的时候,发现官方根本就没有给多少Demo案例来供参考,那些所谓的教程网站想找点真正有使用价值的教程,一篇都没有!如此差的生态,对新手用户很不友好,如果新手不知道自己去查阅相关的API文档,那么对于一个新手想独立开发出一个使用价值高的JavaFx应用简直难如登天。。
所以,作为JavaFx的狂热粉,我决定,从今天开始,在CSDN发布我的JavaFx系列实用教程,好了,我们废话就不多说了,直接进入今天的正题吧!如何通过JavaFx制作软件启动视频欢迎页?今天的内容,整个百度你都搜不到,因为只有我写了~hiahia
还是老规矩,先上GIF,让看官姥爷先饱眼福:(点我看B站演示视频)
放一张加载完毕后的首页图,gif显示部分被裁减掉了:
好了,实现的效果大家也都看到了,我就不卖关子了,我就直接讲一下是怎么实现的吧!
原理如下
核心源码放出来:
/**
* 准备视频欢迎页
* @return 视频欢迎页
*/
public MediaView prepareMediaView()
Media media = new Media (Paths.get("src/main/resources/static/video/bg.mp4").toUri().toString());
MediaPlayer player = new MediaPlayer (media);
// 设置自动播放
player.setAutoPlay (true);
// 设置倍速
player.setBalance (1.0);
return new MediaView (player);
至于视频的文字:你可以这么做最简单:1.先初始化一个伪配置信息
/**
* 初始化欢迎页配置信息
*/
private void initSystemLoadingInfo()
try
showInfo("初始化系统目录...");
Thread.sleep(1500);
showInfo("初始化系统配置...");
Thread.sleep(1500);
showInfo("版本检测...");
Thread.sleep(1500);
showInfo ("康视眼镜,用心做好眼镜!");
Thread.sleep(1500);
catch (Throwable e)
e.printStackTrace();
2.然后写一个异步刷新UI的方法去调用它,切记,一定要异步刷新方法,不可越级主线程去修改UI:
/**
* usermanagerTab.fxml
* @param info 实时展示的内容
*/
public static void showInfo(String info)
Platform.runLater(() -> sysInfoLabel.setText(info));
3.最后你在Start方法底下去执行这一段代码:
目的是:在软件初始化的时候去执行文字加载以及视频加载,然后加载完毕后,自动跳转主Stage视图页面!同样,这里也是异步的!
@Override
public void start(Stage stage)
// sysInfoLabel 是我定义的label组件的fxId
sysInfoLabel = new Label();
sysInfoLabel .setTextFill(Color.WHITE);
AnchorPane.setLeftAnchor (sysInfoLabel , 10.0);
AnchorPane.setBottomAnchor(sysInfoLabel , 10.0);
AnchorPane page = new AnchorPane();
MediaView mediaView = prepareMediaView ();
page.getChildren().addAll(mediaView, sysInfoLabel );
stage.setTitle("康视眼镜");
stage.setScene(new Scene(page));
stage.setWidth(480);
stage.setHeight(350);
stage.initStyle(StageStyle.UNDECORATED);
// 软件图标
stage.getIcons().add(new Image("https://sinsy.oss-cn-beijing.aliyuncs.com/img/66.png"));
stage.show();
// 核心代码
ExecutorService pool = ThreadUtils.getPool ();
pool.execute (() ->
initSystemLoadingInfo();
// 异步隔开主线程刷新UI
Platform.runLater(() ->
try
MainWindowApplication mainWindowStage = new MainWindowApplication ();
// 使用Lambda语法
mainWindowStage.addEventHandler(WindowEvent.WINDOW_SHOWN, event -> stage.close ());
mainWindowStage.initMainWindowStage ();
log.info("System application runs successfully!");
catch (Throwable e)
e.printStackTrace();
log.info ("System application runs failed!The error message:\\n"+e.getMessage ());
);
);
最后就大功告成啦!各位先森,各位女士,我滴程序,写完啦!
各位观众姥爷,可否关注一下哦~嘿嘿,我是热爱Java的fntp,我们下期见…
以上是关于JavaFx开发:一招教会你JavaFx程序制作软件视频欢迎页的主要内容,如果未能解决你的问题,请参考以下文章
如何正确制作嵌套的 JavaFX GridPanes 布局?
使用 gradle 6.3、OpenJDK 14 和 OpenJFX 14 部署 JavaFX 应用程序