当前位置:首页 > 编程语言 > JavaFX > 正文内容

JavaFX桌面入门小项目

lcpsky2年前 (2022-10-23)JavaFX292

概述

JavaFX是用于构建富互联网应用程序的Java库。使用JavaFX开发的应用程序可以在各种设备上运行,如台式计算机,手机,物联网设备,平板电脑等。这一章主要是介绍如何开始JavaFX开发,并开发一个简单的JavaFX桌面入门小项目。其内容是在小窗口中进行文字循环滚动播放及图片背景。

代码

package sample;import javafx.application.Application;import javafx.scene.Scene;import javafx.stage.Stage;import javafx.animation.Interpolator;import javafx.animation.Timeline;import javafx.animation.TranslateTransition;import javafx.geometry.VPos;import javafx.scene.Group;import javafx.scene.image.Image;import javafx.scene.image.ImageView;import javafx.scene.paint.Color;import javafx.scene.shape.Rectangle;import javafx.scene.text.Font;import javafx.scene.text.FontWeight;import javafx.scene.text.Text;import javafx.scene.text.TextAlignment;import javafx.util.Duration;/**
 * javaFX的Hello World例子
 */public class HelloEarthRiseMain extends Application {  
    public static void main(String[] args) {
        Application.launch(args);
    }    @Override
    public void start(Stage stage) {
        String message
                = "Earthrise at Christmas: "
                + "[Forty] years ago this Christmas, a turbulent world "
                + "looked to the heavens for a unique view of our home "
                + "planet. This photo of Earthrise over the lunar horizon "
                + "was taken by the Apollo 8 crew in December 1968, showing "
                + "Earth for the first time as it appears from deep space. "
                + "Astronauts Frank Borman, Jim Lovell and William Anders "
                + "had become the first humans to leave Earth orbit, "
                + "entering lunar orbit on Christmas Eve. In a historic live "
                + "broadcast that night, the crew took turns reading from "
                + "the Book of Genesis, closing with a holiday wish from "
                + "Commander Borman: \"We close with good night, good luck, "
                + "a Merry Christmas, and God bless all of you -- all of "
                + "you on the good Earth.\"";// 定义文本对象
        Text textRef = new Text(message);
        textRef.setLayoutY(100);
        textRef.setTextOrigin(VPos.TOP);        //设置字体布局
        textRef.setTextAlignment(TextAlignment.JUSTIFY);
        textRef.setWrappingWidth(400);        //设置颜色
        textRef.setFill(Color.rgb(187, 195, 107));        //设置字体样式
        textRef.setFont(Font.font("SansSerif", FontWeight.BOLD, 24));// 为文本对象提供一个自动的滚动条
        TranslateTransition transTransition = new TranslateTransition(new Duration(75000), textRef);
        transTransition.setToY(-820);
        transTransition.setInterpolator(Interpolator.LINEAR);
        transTransition.setCycleCount(Timeline.INDEFINITE);// 提供一个图片视图包含一个图片
        Image image = new Image ("/images/earthrise.jpg");
        ImageView imageView = new ImageView(image);// 创建一个包含文字引用的组
        Group textGroup = new Group(textRef);
        textGroup.setLayoutX(50);
        textGroup.setLayoutY(180);
        textGroup.setClip(new Rectangle(430, 85));//用组将图片视图和文本组集成起来
        Group root = new Group(imageView, textGroup);
        Scene scene = new Scene(root, 470, 370);
        stage.setScene(scene);
        stage.setTitle("Hello Earthrise");
        stage.show();//启动自动滚动条
        transTransition.play();
    }
}

结果


在这里插入图片描述
在这里插入图片描述


总结

JavaFX应用

JavaFX项目一定会继承抽象类javafx.application.Application,并在主方法中调用Application类的静态方法launch(args),实现JavaFX程序的启动。

舞台和场景

不管应用部署到桌面还是嵌入式系统,或者其他设备,Stage包含JavaFX应用的用户界面。例如在桌面中,一个Stage有它自己的最高级的窗口,包含标题栏及边框。Stage的初始化是通过JavaFX运行时完成的,通过start()方法传递给我们使用,Stage类有一系列的属性和方法。

  • 一个场景Scene对象包含用户接口中的图像节点

  • 当应用发布到桌面时,在窗口的上方显示一个标题

  • 显示整个舞台

显示图像

如下列代码所示,显示图像需要使用图像视图实例与图像实例。"图像实例"可识别图像资源,并通过URL 加载图像资源。

		// 提供一个图片视图包含一个图片
        Image image = new Image ("/images/earthrise.jpg");
        ImageView imageView = new ImageView(image);

显示文字

正如示例中所示,文本实例包含许多可以修改的属性。可以查阅JavaFX API文档明确属性的使用。Text实例也是一个节点,它具有节点的一切属性。

Text textRef = new Text(message);

文本对象在竖直方向上平移100像素

 textRef.setLayoutY(100);

将文本节点作为组

JavaFX的强大图形特性之一就是场景图,它由一个图形数组成,然后可以将值分配给位于分层中的组的属性,以及所包含的节点组将受到影响。在demo中使用组来包含文本节点并进行剪辑

 		Group textGroup = new Group(textRef); 		//指定组距离窗口左边50像素,距离上边180像素
        textGroup.setLayoutX(50);
        textGroup.setLayoutY(180);
        textGroup.setClip(new Rectangle(430, 85));

动画文本向上滚动

这个动画转换实例通过文本引用对文件节点沿着y方向从100px到-820px,历时75s,并对动画转换设置插值属性为线型,设置循环次数为无限次。

   		TranslateTransition transTransition = new TranslateTransition(new Duration(75000), textRef);
        transTransition.setToY(-820);
        transTransition.setInterpolator(Interpolator.LINEAR);
        transTransition.setCycleCount(Timeline.INDEFINITE);


扫描二维码推送至手机访问。

版权声明:本文由软件技术记录发布,如需转载请注明出处。

本文链接:https://lcpsky.top/?id=15

分享给朋友:
返回列表

没有更早的文章了...

下一篇:如何应用JavaFX开发用户界面

“JavaFX桌面入门小项目” 的相关文章

如何应用JavaFX开发用户界面

如何应用JavaFX开发用户界面

概述JavaFX是用于构建富互联网应用程序的Java库。使用JavaFX开发的应用程序可以在各种设备上运行,如台式计算机,手机,物联网设备,平板电脑等。这一章主要是介绍如何应用JavaFX使用编程声明方式开发用户界面。编程与声明创建用户界面以节点为中心的UI的简介package sampl...

JavaFX属性与绑定

JavaFX属性与绑定

MotivatingExample让我们从示例开始,该示例显示简单整数属性类的几个实例。package sample;import javafx.beans.InvalidationListener;import javafx.beans.property.Intege...

JavaFX UI样式开发(jfx-tab-pane)

JavaFX UI样式开发(jfx-tab-pane)

选项卡组件(jfx-tab-pane).jfx-tab-pane .headers-region > .tab > .jfx-rippler {    -jfx-rippler-fill: #E88F17;}.jfx-tab-pane .tab-header-back...

使用JavaFX开发ToDoList

使用JavaFX开发ToDoList

使用JavaFX开发ToDoList 开发流程1.创建JavaFX项目:打开你的 Java IDE(例如IntelliJ IDEA、Eclipse等),并创建一个新的 JavaFX 项目。2.设计用户界面:在Scene Builder工具中设计一个简单的用户界...

JavaFX知识合集(2023/04/09)

JavaFX知识合集(2023/04/09)

1.为啥你打的Jar包无法双击运行?HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command"D:\Program Files\Java\jdk1.8.0_171\bin\javaw.exe" -jar "%...