第一个 JavaFX 应用程序

在本教程中,我将向你展示如何创建您的第一个 JavaFX 应用程序。因此,本教程既可以向你介绍核心 JavaFX 概念,也可以为你提供一些 JavaFX 代码,你可以将其用作你自己的实验的模板。

JavaFX 应用程序类

JavaFX 应用程序需要一个主启动类。该类必须扩展 javafx.application.Application自 Java 8 以来 Java 中的标准类。

这是一个示例子类Application:

import javafx.application.Application;

public class MyFxApp extends Application {

}

实现 start()

JavaFXApplication类的所有子类都必须实现该类的抽象start() 方法Application(或者是其Application自身的抽象子类)。

该start() 方法在 JavaFX 应用程序启动时被调用。这是上面的示例,但已start()实现方法:

import javafx.application.Application;
import javafx.stage.Stage;

public class MyFxApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("My First JavaFX App");

        primaryStage.show();
    }

}

该start()方法采用类型的单个参数Stage。该阶段是显示 JavaFX 应用程序的所有可视部分的地方。该Stage对象由 JavaFX 运行时为您创建。

上面的例子在舞台对象上设置了一个标题,然后调用show()它。这将使 JavaFX 应用程序在窗口中可见,并且窗口顶部栏中的标题可见。

如果您不调用show()舞台对象,则什么都看不到。没有打开任何窗口。如果您的 JavaFX 应用程序在启动时不可见,请检查您是否记得 Stage show()从内部调用该方法start()。

添加一个 main() 方法

您实际上可以在没有main()方法的情况下启动 JavaFX 应用程序。但是,如果您想将命令行参数传递给应用程序,您需要添加一个main()方法。一般来说,我更喜欢添加一个main()方法,因为它可以更明确地说明哪些代码启动了应用程序。

这是上面main()添加了一个方法的示例:

import javafx.application.Application;
import javafx.stage.Stage;

public class MyFxApp extends Application {

    @Override
        public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("My First JavaFX App");

        primaryStage.show();
    }
    
    public static void main(String[] args) {
        Application.launch(args);
    }
    

}

如您所见,该方法使用命令行参数main()调用静态方法。launch()该launch()方法是位于Application 类中的静态方法。此方法启动 JavaFX 运行时和您的 JavaFX 应用程序。

该launch()方法将检测从哪个类调用它,因此您不必明确告诉它要启动哪个类。

这就是创建 JavaFX 应用程序所需的全部内容。这很简单,不是吗?现在您已经准备好开始使用 JavaFX 了!

这是运行上述 JavaFX 应用程序后打开的窗口的屏幕截图:

添加场景

前面的 JavaFX 示例仅打开一个窗口,但在此窗口内不显示任何内容。要在 JavaFX 应用程序窗口中显示某些内容,您必须Scene向Stage对象添加一个。这是在start()方法内部完成的。

要在 JavaFX 应用程序中显示的所有组件都必须位于场景中。“舞台”和“场景”的名称灵感来自剧院。一个舞台可以展示多个场景,就像在戏剧中一样。类似地,计算机游戏可以有菜单场景、游戏场景、游戏结束场景、高分场景等。

这是一个如何将Scene对象添加到的示例Stage以及一个简单的 Label:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

public class MyFxApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("My First JavaFX App");
        
        Label label = new Label("Hello World, JavaFX !");
        Scene scene = new Scene(label, 400, 200);
        primaryStage.setScene(scene);
        
        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

此示例中添加了三行。首先Label创建一个对象。然后Scene 创建一个对象,传递Labelas 参数以及表示场景宽度和高度的两个参数。

构造函数的第一个参数是场景图Scene的根元素。场景图是一个类似于对象结构的图形,包含要在 JavaFX 应用程序中显示的所有可视组件 - 例如 GUI 组件。

width 和 height 参数设置 JavaFX 窗口打开时的宽度和高度,但用户可以调整窗口大小。

以下是打开的窗口在添加Scene和Label添加后的外观:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/715842.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【论文复现|智能算法改进】基于多策略融合灰狼算法的移动机器人路径规划

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】灰狼算法(GWO)原理及实现 2.改进点 混沌反向学习策略 融合Logistic混沌映射和Tent混沌映射生成Logistic-Tent复合混沌映射: Z i 1 { ( r Z i ( 1 − Z i ) ( 4 −…

下载mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar操作教程

1、下载地址:MySQL :: Download MySQL Community Server (Archived Versions) 2、截图如下

中华老字号李良济,展现百年匠心之魅力,释放千年中医药文化自信

6月14-16日,“潮品老字号 国货LU锋芒”江苏老字号博览会在南京隆重启幕,中华老字号李良济凭借过硬的品牌实力和优质的口碑再次受邀参加,并在展会上绽放百年匠心魅力,彰显千年中医药文化自信! 百年匠心 以实力铸就荣耀…

Autosar诊断-FIM模块功能介绍

文章目录 前言一、FIM模块概述二、FID概念介绍Event ID和DTC之间的关系Event ID与FID之间的关系FIM数据结构三、FiM模块与SW-C模块交互关系四、FIM模块函数调用关系FiM功能模块作用过程前言 Autosar诊断的主体为UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是…

linux如何部署前端项目和安装nginx

要在Linux上部署前端项目并安装Nginx,你可以按照以下步骤操作: 安装Nginx: sudo apt update sudo apt install nginx 启动Nginx服务: sudo systemctl start nginx 确保Nginx服务开机自启: sudo systemctl enable nginx 部署前端项目,假设前…

PromptMRG: Diagnosis-Driven Prompts for Medical Report Generation

文章汇总 存在的问题 罕见疾病在训练数据中的代表性不足,使其诊断性能不可靠。 解决办法 1:利用预训练的CLIP模型从数据库中检索相似的报告来辅助查询图像的诊断。 2:设计SDL模块根据不同疾病的学习状态自适应调整优化目标。 流程解读 文…

MPLS VPN一

R1为客户,现在进行一些基本配置,来确保可以通路由 先启动OSPF跑通 在R3上 等一会 现在启动MPLS 对R3 对R4 然后在R2上 再把接口划到空间里面 原来的IP在公网里面,被清除了 然后再配置接口 查看 对R1(相当于客户) …

2024年最易被破解的密码TOP50,你中招了吗?

今天,我们要聊聊一个每个人都会用到,但可能并不那么重视的话题——密码安全。密码,这个看似简单的字符组合,其实与我们的信息安全、财产安全密切相关。想象一下,如果你的手机、邮箱、银行账户等都被一个简单的密码保护…

vulnhub靶机hacksudoLPE中Challenge-1

下载地址:https://download.vulnhub.com/hacksudo/hacksudoLPE.zip 主机发现 目标146 端口扫描 服务扫描 漏洞扫描 上面那整出来几个洞,可以试试 easy? 估计就是看源码 看来是的 登入咯 这里进不去就是ssh咯 这个看着有点像提权的操作 一…

Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理

PreparedStatement SQL注入 执行预编译的SQL对象 这样也能登录成功 模拟 SQL注入是这个原因 现在基本上不存在SQL注入的问题 解决 SQL注入就是传一些语句导致原来的SQL语句改变了 修改代码 通过设置参数的方式 就能防止SQL注入 实际上我们进行了一个转化 将字符和关键字进…

【健身经验】3 拜拜肉

1 女性手臂粗细与紧实程度,除了取决于运动和生活习惯,很大程度上取决于遗传因素 2 2 如果体脂已经很正常了,整体看起来匀称不胖,偏偏这两块肌肉附近的脂肪“顽固不化”的话,可以试试以下两个简单方法 对于体脂率正常…

Python第二语言(十一、Python面向对象(下))

目录 1. 封装 1.1 私有成员:__成员、__成员方法 2. 继承:单继承、多继承 2.1 继承的基础语法 2.2 复写 & 子类使用父类成员 3. 变量的类型注解:给变量标识变量类型 3.1 为什么需要类型注解 3.2 类型注解 3.3 类型注解的语法 3.…

基于51单片机万年历设计—显示温度农历

基于51单片机万年历设计 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 本系统采用单片机DS1302时钟芯片LCD1602液晶18b20温度传感器按键蜂鸣器设计而成。 1.可以显示年月日、时分秒、星期、温度值。…

CodeQL从入门到入土

为什么在现在写这文章 CodeQL传闻找到了Log4j的漏洞,这段时间上边要求,把公司系统内部常见的问题用CodeQL写检测脚本,用于系统长期检测。主要是记录这段时间的学习,以及自己总结的常用写法。 一个需求,不同人写出来的…

【数学】什么是傅里叶级数与傅里叶变换?

傅里叶级数与傅里叶变换 背景 傅里叶级数和傅里叶变换是数学和工程领域中的重要工具,特别是在信号处理、图像处理和物理学中。傅里叶级数用于将周期函数表示为正弦和余弦函数的和,而傅里叶变换用于将任意函数表示为频率的函数。 公式 傅里叶级数&…

java程序什么时候需要在运行的时候动态修改字节码对象

一、java程序什么时候需要在运行的时候动态修改字节码对象 我认为有两种场景,一种是无法修改源代码的时候;另外一种是功能增强的时候。 1、无法修改源代码 举个例子,java程序依赖的第三方的jar包中发现了bug,但是官方还没有修复…

0-1 构建用户画像数仓

目录 前言 一、用户画像概述 1.1 用户画像 1.2 用户标签 1.3 用户群组 二、建设标签和标签体系 2.1 标签体系 2.1.1 统计类标签 2.1.2 规则类标签 2.1.3 机器学习挖掘类标签 2.2 标签建设流程 2.2.1 需求收集与分析 2.2.2 产出标签需求文档 2.2.3 标签的开发 H…

【Java】已解决:Java.lang.OutOfMemoryError: GC overhead limit exceeded

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 问题背景 java.lang.OutOfMemoryError: GC overhead limit exceeded 是Java虚拟机(JVM)在运行时遇到的一种内存溢出错误。这种错误通常发生在应用程序的堆内存(Heap Memor…

JavaFX 图像视图

JavaFX ImageView 控件可以在 JavaFX GUI 中显示图像。ImageView 控件必须添加到场景图中才能可见。JavaFX ImageView 控件由类表示 javafx.scene.image.ImageView。 创建一个 ImageView 通过创建类的实例来创建 ImageView 控件实例ImageView。类的构造函数ImageView需要一个…