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编写一个时钟制作程序

如何制作 Javafx 图像裁剪应用程序

如何正确制作嵌套的 JavaFX GridPanes 布局?

使用 gradle 6.3、OpenJDK 14 和 OpenJFX 14 部署 JavaFX 应用程序

用于纯 Windows 桌面应用程序的 JavaFX 2 与 Swing

JavaFX 对背景的影响