所有的Java FX程序必须继承自Application类且必须覆写start( )方法,而start ( )方法的参数是一个stage(继承Application类且使用Stage类必须导入javafx.application.Application 和 javafx.stage.Stage)。stage实际上就是一个窗体,也就是场景Scene的容器(stage的观感取决于程序运行环境,也就是操作系统)。代码如下:

----------------------------------------------------------------------------------------------------------

import javafx.application.Application;

import javafx.stage.Stage;

 

Public class application extends Application

{

public void start(Stage stage)

{

//设置主窗体标题内容。

stage.setTitle(“Hello”);

//激活显示主窗体。

Stage.show();

}

}

----------------------------------------------------------------------------------------------------------

以上就是一个最简单的Java FX桌面应用程序,运行效果如下:

从上面这段代码中,我们可以看到该Java文件中没有显式的包含Java主程序的入口(也就是public static void main ( String[ ] args )),其实这是一种Java FX程序的写法,也可以将主程序的入口显式的写出来,只不过如果写了main方法,就必须在main方法中调用Application.launch( )方法来启动程序主窗体,该方法的参数是main方法的args。

以下是书写main方法时运行Java FX程序的方式:

----------------------------------------------------------------------------------------------------------

import javafx.application.Application;

import javafx.stage.Stage;

 

Public class application extends Application

{

public static void main( String[] args )

{

//运行当前application。

Application.launch(args);

}

public void start(Stage stage)

{

//设置主窗体标题内容。

stage.setTitle(“Hello”);

//激活显示主窗体。

Stage.show();

}

}

----------------------------------------------------------------------------------------------------------

我们来梳理一下Java FX Application程序的结构:一个FX应用程序必须有一个窗体stage,而一个窗体stage又必须包含一个场景scene,一个场景scene中又包含了各种UI组件的根节点VBox,VBox中才是各种可视化的UI控件。

关于VBox,整个场景的UI控件都是以树型结构组织起来的,而VBox就是这个树的根节点,也就是说VBox是场景中所有UI控件的根节点。

由此,对于Java FX Application程序的编写,我们得到如下的流程:

① 设置当前application的窗体标题并激活显示窗体

stage.setTitle(……);

Stage.show( );

② 创建当前窗体的scene并指定UI控件的根节点

VBox vBox = new VBox( );

Scene scene = new Scene(vBox, SCENE_WIDTH, SCENE_HEIGHT);

stage.setScene(scene);

③ 创建各种UI控件并添加到UI控件根节点VBox

Text text = new Text(……);

vBox.getChildren( ).add(text);

Label label = new Label(……);

vBox.getChildren( ).add(label);

 

/*

 * Java FX中按钮事件的指定:通过Button.setOnAction( )方法,

 * 参数为表示按钮事件的lambda表达式。

 */

Button exit = new Button(Exit);

button.setOnAction( e -> {

Platform.exit( );

})

vBox.getChildren( ).add(exit);

注:可以使用vBox.getChildren( ).addAll(控件1, 控件2, 控件3 ……)方法同时向vBox中加入多个UI控件。

Java FX中退出Application的方法是Platform.exit( )。

-------------------以下就是一个添加了各种UI控件的Java FX Application程序--------------------------

import javafx.application.Application;

import javafx.application.Platform;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.Label;

import javafx.scene.control.TextField;

import javafx.scene.layout.VBox;

import javafx.scene.text.Text;

import javafx.stage.Stage;

public class Hello extends Application {

//-----------------------------------------------------------------主程序入口。

public static void main(String[] args) {

//运行fx程序。

Application.launch(args);

}

//---------------------------------------------------------------需要使用的数据。

public final static int SCENE_WIDTH = 1366;                        //场景宽度。

public final static int SCENE_HEIGHT = 768;                        //场景高度。

//---------------------------------------------------------------初始化主窗体。

public void start(Stage stage) {

//设置主窗体标题并激活显示主窗体。

stage.setTitle("Hello");

stage.show();

//创建场景并创建场景中UI控件的根节点。

VBox vBox = new VBox();

Scene scene = new Scene(vBox, SCENE_WIDTH, SCENE_HEIGHT);

stage.setScene(scene);

//创建文本控件。

Text text = new Text("Hello");

vBox.getChildren().add(text);

//创建标签并设置标签样式为蓝色。

Label label = new Label("Enter your name:");

label.setStyle("-fx-text-fill: blue;");

//vBox.getChildren().add(label);

//创建文本域并指定尺寸。

TextField textField = new TextField("");

textField.setMaxSize(256, 32);

vBox.getChildren().add(textField);

//创建按钮。

Button exit = new Button("Exit");

exit.setOnAction(event -> {

Platform.exit();

});

vBox.getChildren().add(exit);

//设置行间距。

vBox.setSpacing(15);

//可以同时向UI根节点中加入多个UI控件。

//vBox.getChildren().addAll(text, label, textField, exit);

}

}

----------------------------------------------运行效果如下----------------------------------------------

转载于:https://blog.51cto.com/consolas/1920192

Java FX8_第一篇_编写第一个Java FX Application相关推荐

  1. java控制台输入汉字_给我一个JAVA控制台输入中文的实例

    给我一个JAVA控制台输入中文的实例 关注:205  答案:3  mip版 解决时间 2021-01-27 14:43 提问者葃日懙妳 2021-01-26 20:40 越简单越好,就是运行之后出了控 ...

  2. 鸿蒙OS应用开发_基础篇_编写第一个HarmonyOs应用_体会HarmonyOs的一次开发多端部署_以及分布式任务调度_IDE安装_了解应用组件以及应用布局---HarmonyOs开发工作笔记001

    这个系列的文章,跟大家一起学习HarmonyOs系统的应用开发, 先给出harmonyOs开发手册文档,非常详细: https://developer.harmonyos.com/cn/docs/do ...

  3. 用java编写一个图书管理系统_手把手教你编写第一个java程序

    安装完jdk后我们就可以试着编写第一个java程序了,让我们一起来试试吧! 第一步 点击开始--所有程序--附件--记事本,新建记事本,输入以下代码: class HelloWorld { publi ...

  4. eclipse编写java教程_【安装eclipse, 配置java环境教程】 编写第一个java程序

    写java通常用eclipse编写,还有一款编辑器比较流行叫IJ.这里我们只说下eclipse编写java的前期工作. 在安装eclipse之前要下载java的sdk文件,即Java SE Devel ...

  5. 06从零开始学Java之编写第一个Java程序HelloWorld

    作者:孙玉昌,昵称[ 一一哥],另外[ 壹壹哥]也是我哦 CSDN博客专家.万粉博主.阿里云专家博主.掘金优质作者 配套开源项目资料 GitHub地址: https://github.com/SunL ...

  6. python小海龟画粗细渐变的线_Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle)...

    Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle) turtle 是一个简单的绘图工具 提供一个小海龟, 可以把它理解为一个机器人, 只能听懂有限的命令, 且绘图窗口的原点 ...

  7. 编写第一个Java程序:helloworld

    配置好java开发环境后,我们可以编写第一个java程序(helloworld). 在开始编写java程序时,我们要知道java程序开发的三个步骤:编写.编译.运行. 编写阶段主要是由程序员编写后缀为 ...

  8. 用记事本编写第一个Java程序运行时 出现报错:错误: 类helloworld是公共的, 应在名为 helloworld.java 的文件中声明 public class helloworld {

    在书本上盲人摸象的摸索学习Java,Java环境配置完成,安装好eclipse后,便兴冲冲的去在记事本上编写第一个Java程序,结果给破了一盆冷水,略懵 public class helloworld ...

  9. java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器

    java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...

最新文章

  1. Flume原理初探:基本执行原理概述
  2. 解决Redhat Linux AS使用yum时出现This system is not registered with RHN的问题(改用CentOS的yum)...
  3. 使用windbg定位内存问题【入门级】
  4. 0212互联网新闻 | 华为将发布5G折叠屏手机;谷歌在小范围内推出AR实景导航
  5. 常用 BUG 解决方法
  6. 如何判断两物体加速度相等_高中物理知识点总结解题技巧:关联物体问题的求解方法...
  7. 9008刷机教程oppo_手机黑砖9006/9008救砖教程 通用救砖模式刷机修复方法
  8. 卸载office2010后 再安装2013 错误1706 安装程序找不到需要的文件
  9. 解决state_enabled=false 不起作用的
  10. 第三阶段应用层——1.4 数码相册—FreeType介绍
  11. 音乐鉴赏 周海宏 网络课程 题库(Ctrl+f查找)点赞哦
  12. 程序员真的是吃青春饭的行业吗?
  13. 推荐几个高质量图片网站,再也不怕没图装X了 1
  14. html5文档样式,jQuery HTML5文件上传美化插件jQuery.filer
  15. 算法_二叉树_二叉树的最大深度
  16. 【蝴蝶效应】【青蛙现象】【鳄鱼法则】 【鲇鱼效应】 【羊群效应】 【刺猬法则】 【手表定律】 ...
  17. Latex文本两端对齐
  18. 计算机开机没有找到引导设备,电脑开机显示没有可以引导的设备
  19. android usb单反相机,android mtp 获取单反相机中的照片
  20. 大话设计模式读书笔记之桥接模式

热门文章

  1. java断言是什么_Java断言
  2. 医院对讲管理his系统服务器,全视通全数字医护对讲信息服务系统
  3. 怎样了解某研究课题的总体发展趋势?
  4. 聚美优品张川:如何搭建秒杀场景下的运维架构
  5. 关于使用Karate-实现上传文件接口测试方法总结
  6. java SpringBoot 集成 阿里云视频直播 完成直播功能
  7. Bugku:杂项 隐写2
  8. AngularJS $injector API
  9. PPT分屏放映操作小技巧
  10. 2022-2027年中国茶色素市场规模现状及投资规划建议报告